X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31fdb8d993d3d4373199b1a676b271c4fd4c12e8..260020e39271329f71d1ef7912e3dc8216a2e924:/src/gtk/dialog.cpp diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 7688d3329b..056a469fea 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -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);