From d420454eb1cd263a6e43b30c8a8259262c35b27a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 23 Apr 2007 20:11:11 +0000 Subject: [PATCH] don't select the window about to be deleted as parent for modal dialog in ShowModal() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45606 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/dialog.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 75b82b7303..5196121dc1 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -115,14 +115,20 @@ int wxDialog::ShowModal() // forbidden if ( !GetParent() && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) ) { - wxWindow *parent = wxTheApp->GetTopWindow(); + extern WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete; + + wxWindow * const parent = wxTheApp->GetTopWindow(); + if ( parent && parent != this && - !parent->IsBeingDeleted() && - !(parent->GetExtraStyle() & wxWS_EX_TRANSIENT) ) + parent->IsShownOnScreen() && + !parent->IsBeingDeleted() && + !wxPendingDelete.Member(parent) && + !(parent->GetExtraStyle() & wxWS_EX_TRANSIENT) ) { 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) ); } }