]> git.mxchange.org Git - flightgear.git/commitdiff
Canvas: Bugfixes
authorThomas Geymayer <tomgey@gmail.com>
Mon, 13 Aug 2012 11:59:45 +0000 (13:59 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Mon, 13 Aug 2012 12:11:26 +0000 (14:11 +0200)
 - Fix dependency cycle
 - Correctly forward mouse release event

src/Canvas/gui_mgr.cxx

index 4fa66febd24830533b1c932d5a0145f1b2c5edad..f11cc3296609aab88e53b4905c8372d7b4fea73e 100644 (file)
@@ -90,7 +90,7 @@ class WindowUserData:
   public osg::Referenced
 {
   public:
-    canvas::WindowPtr window;
+    canvas::WindowWeakPtr window;
     WindowUserData(canvas::WindowPtr window):
       window(window)
     {}
@@ -277,7 +277,8 @@ bool GUIMgr::handleMouse(const osgGA::GUIEventAdapter& ea)
     {
       assert(layer->getChild(j)->getUserData());
       canvas::WindowPtr window =
-        static_cast<WindowUserData*>(layer->getChild(j)->getUserData())->window;
+        static_cast<WindowUserData*>(layer->getChild(j)->getUserData())
+          ->window.lock();
       if( window->getRegion().contains(event.x, event.y) )
       {
         window_at_cursor = window;
@@ -300,9 +301,6 @@ bool GUIMgr::handleMouse(const osgGA::GUIEventAdapter& ea)
       break;
 
     case osgGA::GUIEventAdapter::RELEASE:
-      if( !_last_push.expired() )
-        return false;
-
       target_window = _last_push.lock();
       _last_push.reset();
       break;