Index: /OpenSceneGraph/trunk/include/osgViewer/View
===================================================================
--- /OpenSceneGraph/trunk/include/osgViewer/View (revision 9418)
+++ /OpenSceneGraph/trunk/include/osgViewer/View (revision 9909)
@@ -114,7 +114,10 @@
 
         typedef std::list< osg::ref_ptr<osgGA::GUIEventHandler> > EventHandlers;
-        
+     
         /** Add an EventHandler that adds handling of events to the View.*/
         void addEventHandler(osgGA::GUIEventHandler* eventHandler);
+
+        /** Remove an EventHandler from View.*/
+        void removeEventHandler(osgGA::GUIEventHandler* eventHandler);
 
         /** Get the View's list of EventHandlers.*/
Index: /OpenSceneGraph/trunk/src/osgViewer/View.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgViewer/View.cpp (revision 9892)
+++ /OpenSceneGraph/trunk/src/osgViewer/View.cpp (revision 9909)
@@ -358,5 +358,18 @@
 void View::addEventHandler(osgGA::GUIEventHandler* eventHandler)
 { 
-    _eventHandlers.push_back(eventHandler);
+    EventHandlers::iterator itr = std::find(_eventHandlers.begin(), _eventHandlers.end(), eventHandler);
+    if (itr == _eventHandlers.end())
+    {
+        _eventHandlers.push_back(eventHandler);
+    }
+}
+
+void View::removeEventHandler(osgGA::GUIEventHandler* eventHandler)
+{
+    EventHandlers::iterator itr = std::find(_eventHandlers.begin(), _eventHandlers.end(), eventHandler);
+    if (itr != _eventHandlers.end())
+    {
+        _eventHandlers.erase(itr);
+    }
 }
 
