]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dialog.cpp
Borland has only lfind
[wxWidgets.git] / src / gtk / dialog.cpp
index 7688d3329b11fb52cc7f9d95a236a71004b25495..056a469fea74c21b83ddde63d15c10067115707a 100644 (file)
@@ -30,7 +30,8 @@
 // global data
 //-----------------------------------------------------------------------------
 
-extern int g_openDialogs;
+// Don't allow window closing if there are open dialogs
+int g_openDialogs;
 
 //-----------------------------------------------------------------------------
 // wxDialog
@@ -111,6 +112,13 @@ int wxDialog::ShowModal()
        return GetReturnCode();
     }
 
+    // release the mouse if it's currently captured as the window having it
+    // will be disabled when this dialog is shown -- but will still keep the
+    // capture making it impossible to do anything in the modal dialog itself
+    wxWindow * const win = wxWindow::GetCapture();
+    if ( win )
+        win->GTKReleaseMouseAndNotify();
+
     // use the apps top level window as parent if none given unless explicitly
     // forbidden
     if ( !GetParent() && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) )
@@ -134,7 +142,7 @@ int wxDialog::ShowModal()
     // NOTE: gtk_window_set_modal internally calls gtk_grab_add() !
     gtk_window_set_modal(GTK_WINDOW(m_widget), TRUE);
 
-    wxEventLoop().Run();
+    wxGUIEventLoop().Run();
 
     gtk_window_set_modal(GTK_WINDOW(m_widget), FALSE);