X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e2414cbe8c21931afbb590132232553514da824c..e6886957b4b3a8dfc0fb85c22c62e132a357defd:/src/gtk1/dialog.cpp diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index f472f31e6c..4c394a33e5 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -54,7 +54,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxWindow) wxDialog::wxDialog(void) { m_title = ""; - m_modalShowing = TRUE; + m_modalShowing = FALSE; wxTopLevelWindows.Insert( this ); }; @@ -63,6 +63,7 @@ wxDialog::wxDialog( wxWindow *parent, const wxPoint &pos, const wxSize &size, long style, const wxString &name ) { + m_modalShowing = FALSE; wxTopLevelWindows.Insert( this ); Create( parent, id, title, pos, size, style, name ); }; @@ -76,8 +77,6 @@ bool wxDialog::Create( wxWindow *parent, PreCreation( parent, id, pos, size, style, name ); - m_modalShowing = ((m_windowStyle & wxDIALOG_MODAL) == wxDIALOG_MODAL); - m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL ); GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); @@ -108,6 +107,7 @@ wxDialog::~wxDialog(void) void wxDialog::SetTitle(const wxString& title ) { m_title = title; + if (m_title.IsNull()) m_title = ""; gtk_window_set_title( GTK_WINDOW(m_widget), m_title ); }; @@ -189,7 +189,7 @@ void wxDialog::OnCloseWindow(wxCloseEvent& event) bool wxDialog::Show( bool show ) { - if (!show && m_modalShowing) + if (!show && IsModal() && m_modalShowing) { EndModal( wxID_CANCEL ); }; @@ -198,25 +198,36 @@ bool wxDialog::Show( bool show ) if (show) InitDialog(); - if (show && m_modalShowing) - { - gtk_grab_add( m_widget ); - gtk_main(); - gtk_grab_remove( m_widget ); - }; - return TRUE; }; int wxDialog::ShowModal(void) { + if (m_modalShowing) return GetReturnCode(); + Show( TRUE ); + + m_modalShowing = TRUE; + + gtk_grab_add( m_widget ); + gtk_main(); + gtk_grab_remove( m_widget ); + return GetReturnCode(); }; void wxDialog::EndModal( int retCode ) { SetReturnCode( retCode ); + + if (!m_modalShowing) + { + wxFAIL_MSG( "wxDialog: called EndModal twice" ); + return; + }; + + m_modalShowing = FALSE; + gtk_main_quit(); };