X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5e31cc8e2c4e5399548a637e3b9705d37a19335..8ca1a013e4e699724040ff1f514dab3b4a11d3c9:/src/gtk/dialog.cpp diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 2ff8564b78..63c13c0c98 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 @@ -115,14 +116,11 @@ int wxDialog::ShowModal() // forbidden if ( !GetParent() && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) ) { - wxWindow *parent = wxTheApp->GetTopWindow(); - if ( parent && - parent != this && - parent->IsBeingDeleted() && - !(parent->GetExtraStyle() & wxWS_EX_TRANSIENT) ) + wxWindow * const parent = GetParentForModalDialog(); + if ( parent && parent != this ) { - m_parent = parent; - gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(parent->m_widget) ); + gtk_window_set_transient_for( GTK_WINDOW(m_widget), + GTK_WINDOW(parent->m_widget) ); } } @@ -137,7 +135,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);