]> git.saurik.com Git - wxWidgets.git/commitdiff
wxX11:
authorRobert Roebling <robert@roebling.de>
Thu, 14 Feb 2002 00:45:13 +0000 (00:45 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 14 Feb 2002 00:45:13 +0000 (00:45 +0000)
     Don't add popup windows to wxTopLevelWindows,
       espially not if you don't delete them later.
     Corrected ReleaseMouse().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/x11/popupwin.cpp
src/x11/window.cpp

index debfbf577ba383558178b3288dc311c69661073c..c159e89b415eea6e6035e69154968e3f8bff432b 100644 (file)
@@ -49,8 +49,6 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
     m_parent = parent;
     if (m_parent) m_parent->AddChild( this );
 
-    wxTopLevelWindows.Append(this);
-    
     Display *xdisplay = wxGlobalDisplay();
     int xscreen = DefaultScreen( xdisplay );
     Visual *xvisual = DefaultVisual( xdisplay, xscreen );
index 89ba9d056a6b7f6a9688852592ecae56343d91c6..7a5ce9f198c7568e0b062eda433fcb22f176e914 100644 (file)
@@ -293,43 +293,46 @@ void wxWindowX11::DoCaptureMouse()
 {
     if ((g_captureWindow != NULL) && (g_captureWindow != this))
     {
-       wxASSERT_MSG(FALSE, "Trying to capture before mouse released.");
+        wxASSERT_MSG(FALSE, "Trying to capture before mouse released.");
 
-       // Core dump now
-       int *tmp = NULL;
-       (*tmp) = 1;
-       return;
+        // Core dump now
+        int *tmp = NULL;
+        (*tmp) = 1;
+        return;
     }
     
-    if ( m_winCaptured )
+    if (m_winCaptured)
         return;
 
+    Window xwindow = (Window) GetMainWindow();
+
     g_captureWindow = (wxWindow*) this;
 
-    if (GetMainWindow())
+    if (xwindow)
     {
-        int res = XGrabPointer(wxGlobalDisplay(), (Window) GetMainWindow(),
+        int res = XGrabPointer(wxGlobalDisplay(), xwindow,
             FALSE,
             ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask,
             GrabModeAsync,
                GrabModeAsync,
             None,
             None, /* cursor */ // TODO: This may need to be set to the cursor of this window
-            CurrentTime);
+            CurrentTime );
 
         if (res != GrabSuccess)
         {
-           wxString msg;
-           msg.Printf("Failed to grab pointer for window %s", this->GetClassInfo()->GetClassName());
-           wxLogDebug(msg);
-           if (res == GrabNotViewable)
-           {
-               wxLogDebug("This is not a viewable window - perhaps not shown yet?");
-           }
-           g_captureWindow = NULL;
+            wxString msg;
+            msg.Printf("Failed to grab pointer for window %s", this->GetClassInfo()->GetClassName());
+            wxLogDebug(msg);
+            if (res == GrabNotViewable)
+            {
+                wxLogDebug("This is not a viewable window - perhaps not shown yet?");
+            }
+            g_captureWindow = NULL;
             return;
         }
-       wxLogDebug("Grabbed pointer");
+
+        wxLogDebug("Grabbed pointer");
 
 #if 0
         res = XGrabButton(wxGlobalDisplay(), AnyButton, AnyModifier,
@@ -351,11 +354,8 @@ void wxWindowX11::DoCaptureMouse()
 
 #if 0
         res = XGrabKeyboard(wxGlobalDisplay(), (Window) GetMainWindow(),
-#if 0
             ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask,
-#else
             FALSE,
-#endif
             GrabModeAsync,
                GrabModeAsync,
             CurrentTime);
@@ -364,10 +364,8 @@ void wxWindowX11::DoCaptureMouse()
         {
             wxLogDebug("Failed to grab keyboard.");
             XUngrabPointer(wxGlobalDisplay(), CurrentTime);
-#if 0
             XUngrabButton(wxGlobalDisplay(), AnyButton, AnyModifier,
                 (Window) GetMainWindow());
-#endif
             return;
         }
 #endif
@@ -379,18 +377,18 @@ void wxWindowX11::DoCaptureMouse()
 void wxWindowX11::DoReleaseMouse()
 {
     g_captureWindow = NULL;
+    
     if ( !m_winCaptured )
         return;
 
-    Window wMain = (Window)GetMainWindow();
+    Window xwindow = (Window) GetMainWindow();
 
-    if ( wMain )
+    if (xwindow)
     {
-        XUngrabPointer(wxGlobalDisplay(), wMain);
+        XUngrabPointer( wxGlobalDisplay(), CurrentTime );
 #if 0
-        XUngrabButton(wxGlobalDisplay(), AnyButton, AnyModifier,
-                wMain);
-        XUngrabKeyboard(wxGlobalDisplay(), CurrentTime);
+        XUngrabButton( wxGlobalDisplay(), AnyButton, AnyModifier, xwindow);
+        XUngrabKeyboard( wxGlobalDisplay(), CurrentTime );
 #endif
     }
     wxLogDebug("Ungrabbed pointer");