X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..246037e22990a4719c672c2e2a8b62b99cc4d49c:/src/gtk1/dialog.cpp?ds=sidebyside diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index 0c63e39f11..f472f31e6c 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -17,6 +17,10 @@ #include "wx/app.h" #include "wx/gtk/win_gtk.h" +//----------------------------------------------------------------------------- + +extern wxList wxPendingDelete; + //----------------------------------------------------------------------------- // delete @@ -57,7 +61,7 @@ wxDialog::wxDialog(void) wxDialog::wxDialog( wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos, const wxSize &size, - const long style, const wxString &name ) + long style, const wxString &name ) { wxTopLevelWindows.Insert( this ); Create( parent, id, title, pos, size, style, name ); @@ -66,7 +70,7 @@ wxDialog::wxDialog( wxWindow *parent, bool wxDialog::Create( wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos, const wxSize &size, - const long style, const wxString &name ) + long style, const wxString &name ) { m_needParent = FALSE; @@ -120,7 +124,9 @@ void wxDialog::OnApply( wxCommandEvent &WXUNUSED(event) ) void wxDialog::OnCancel( wxCommandEvent &WXUNUSED(event) ) { if (IsModal()) + { EndModal(wxID_CANCEL); + } else { SetReturnCode(wxID_CANCEL); @@ -133,14 +139,15 @@ void wxDialog::OnOk( wxCommandEvent &WXUNUSED(event) ) if ( Validate() && TransferDataFromWindow()) { if (IsModal()) + { EndModal(wxID_OK); + } else { SetReturnCode(wxID_OK); this->Show(FALSE); }; }; - EndModal( wxID_OK ); }; void wxDialog::OnPaint( wxPaintEvent& WXUNUSED(event) ) @@ -153,7 +160,7 @@ bool wxDialog::OnClose(void) static wxList closing; if (closing.Member(this)) return FALSE; // no loops - + closing.Append(this); wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); @@ -164,6 +171,14 @@ bool wxDialog::OnClose(void) return FALSE; } +bool wxDialog::Destroy(void) +{ + if (!wxPendingDelete.Member(this)) + wxPendingDelete.Append(this); + + return TRUE; +} + void wxDialog::OnCloseWindow(wxCloseEvent& event) { if (GetEventHandler()->OnClose() || event.GetForce()) @@ -172,7 +187,7 @@ void wxDialog::OnCloseWindow(wxCloseEvent& event) }; }; -bool wxDialog::Show( const bool show ) +bool wxDialog::Show( bool show ) { if (!show && m_modalShowing) { @@ -201,8 +216,8 @@ int wxDialog::ShowModal(void) void wxDialog::EndModal( int retCode ) { - gtk_main_quit(); SetReturnCode( retCode ); + gtk_main_quit(); }; void wxDialog::InitDialog(void)