Index: /OpenSceneGraph/trunk/include/osgGA/MatrixManipulator
===================================================================
--- /OpenSceneGraph/trunk/include/osgGA/MatrixManipulator (revision 10246)
+++ /OpenSceneGraph/trunk/include/osgGA/MatrixManipulator (revision 10913)
@@ -101,4 +101,10 @@
         virtual float getFusionDistanceValue() const { return 1.0f; }
 
+        /** Set the distance parameter (used by TrackballManipulator etc.) */
+        void setDistance(double /*distance*/) {}
+
+        /** Get the distance parameter. */
+        virtual double getDistance() const { return 1.0; }
+
         /** Set the mask to use when set up intersection traversal such as used in manipulators that follow terrain or have collision detection.
           * The intersection traversal mask is useful for controlling what parts of the scene graph should be used for intersection purposes.*/
Index: /OpenSceneGraph/trunk/include/osgGA/TerrainManipulator
===================================================================
--- /OpenSceneGraph/trunk/include/osgGA/TerrainManipulator (revision 10255)
+++ /OpenSceneGraph/trunk/include/osgGA/TerrainManipulator (revision 10913)
@@ -56,4 +56,11 @@
         /** Get the FusionDistanceValue. Used by SceneView for setting up stereo convergence.*/
         virtual float getFusionDistanceValue() const { return _distance; }
+
+        /** Set the distance of the trackball. */
+        void setDistance(double distance) { _distance = distance; }
+
+        /** Get the distance of the trackball. */
+        double getDistance() const { return _distance; }
+
 
         /** Attach a node to the manipulator. 
Index: /OpenSceneGraph/trunk/include/osgGA/KeySwitchMatrixManipulator
===================================================================
--- /OpenSceneGraph/trunk/include/osgGA/KeySwitchMatrixManipulator (revision 7648)
+++ /OpenSceneGraph/trunk/include/osgGA/KeySwitchMatrixManipulator (revision 10913)
@@ -107,4 +107,10 @@
         virtual float getFusionDistanceValue() const { return _current->getFusionDistanceValue(); }
 
+        /** Set the distance property. */
+        void setDistance(double distance);
+
+        /** Get the distance property. */
+        double getDistance() const;
+
 
         virtual void setNode(osg::Node* n);
Index: /OpenSceneGraph/trunk/src/osgGA/KeySwitchMatrixManipulator.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgGA/KeySwitchMatrixManipulator.cpp (revision 7064)
+++ /OpenSceneGraph/trunk/src/osgGA/KeySwitchMatrixManipulator.cpp (revision 10913)
@@ -57,4 +57,24 @@
 }
 
+/** Set the distance parameter (used by TrackballManipulator etc.) */
+void KeySwitchMatrixManipulator::setDistance(double distance)
+{
+    for(KeyManipMap::iterator itr=_manips.begin();
+        itr!=_manips.end();
+        ++itr)
+    {
+        itr->second.second->setDistance(distance);
+    }
+}
+
+double KeySwitchMatrixManipulator::getDistance() const
+{
+    if(!_current)
+    {
+        return _current->getDistance();
+    }
+    else return 1.0;
+}
+
 void KeySwitchMatrixManipulator::setNode(osg::Node* node)
 {
