X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dfdc483a235dae40290f4f3a69d1f41db6797609..12bb29f5432174ecbd65549bda832d70d34a98ae:/src/gtk1/dialog.cpp diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index 31df13df6b..c760fe0de2 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp +// Name: src/gtk1/dialog.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -11,16 +11,21 @@ #include "wx/wxprec.h" #include "wx/dialog.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/cursor.h" + +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/frame.h" + #include "wx/cursor.h" +#endif // WX_PRECOMP + #include "wx/evtloop.h" +#include "wx/modalhook.h" #include #include #include -#include "wx/gtk/win_gtk.h" +#include "wx/gtk1/win_gtk.h" //----------------------------------------------------------------------------- // global data @@ -39,8 +44,6 @@ BEGIN_EVENT_TABLE(wxDialog,wxDialogBase) EVT_CLOSE (wxDialog::OnCloseWindow) END_EVENT_TABLE() -IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxTopLevelWindow) - void wxDialog::Init() { m_returnCode = 0; @@ -135,9 +138,9 @@ void wxDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) s_closing.Append(this); - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); + wxCommandEvent cancelEvent(wxEVT_BUTTON, wxID_CANCEL); cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); + HandleWindowEvent(cancelEvent); s_closing.DeleteObject(this); } @@ -158,6 +161,9 @@ bool wxDialog::Show( bool show ) GtkOnSize( m_x, m_y, m_width, m_height ); } + if (show && CanDoLayoutAdaptation()) + DoLayoutAdaptation(); + bool ret = wxWindow::Show( show ); if (show) InitDialog(); @@ -177,6 +183,8 @@ void wxDialog::SetModal( bool WXUNUSED(flag) ) int wxDialog::ShowModal() { + WX_HOOK_MODAL_DIALOG(); + if (IsModal()) { wxFAIL_MSG( wxT("wxDialog:ShowModal called twice") ); @@ -185,17 +193,11 @@ int wxDialog::ShowModal() // use the apps top level window as parent if none given unless explicitly // forbidden - if ( !GetParent() && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) ) + wxWindow * const parent = GetParentForModalDialog(); + if ( parent ) { - wxWindow *parent = wxTheApp->GetTopWindow(); - if ( parent && - parent != this && - parent->IsBeingDeleted() && - !(parent->GetExtraStyle() & wxWS_EX_TRANSIENT) ) - { - m_parent = parent; - gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(parent->m_widget) ); - } + m_parent = parent; + gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(parent->m_widget) ); } wxBusyCursorSuspender cs; // temporarily suppress the busy cursor