X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dfe1eee3bb9ecde8c4490ea69c07b5030d69530c..b3402d0df8c9f763da1e32fc28c824014e5516c6:/src/motif/dialog.cpp?ds=sidebyside diff --git a/src/motif/dialog.cpp b/src/motif/dialog.cpp index 72ec1d98da..a9a097e096 100644 --- a/src/motif/dialog.cpp +++ b/src/motif/dialog.cpp @@ -19,6 +19,9 @@ #include "wx/app.h" #include "wx/settings.h" +#ifdef __VMS__ +#pragma message disable nosimpint +#endif #include #include @@ -38,6 +41,9 @@ #if XmVersion > 1000 #include #endif +#ifdef __VMS__ +#pragma message enable nosimpint +#endif #include "wx/motif/private.h" @@ -60,23 +66,20 @@ wxList wxModalDialogs; wxList wxModelessWindows; // Frames and modeless dialogs extern wxList wxPendingDelete; -extern wxHashTable *wxWidgetHashTable; - #define wxUSE_INVISIBLE_RESIZE 1 -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) BEGIN_EVENT_TABLE(wxDialog, wxPanel) -EVT_BUTTON(wxID_OK, wxDialog::OnOK) -EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) -EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) -EVT_CHAR_HOOK(wxDialog::OnCharHook) -EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) -EVT_CLOSE(wxDialog::OnCloseWindow) + EVT_SIZE(wxDialog::OnSize) + EVT_BUTTON(wxID_OK, wxDialog::OnOK) + EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) + EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) + EVT_CHAR_HOOK(wxDialog::OnCharHook) + EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) + EVT_CLOSE(wxDialog::OnCloseWindow) END_EVENT_TABLE() -#endif wxDialog::wxDialog() { @@ -260,6 +263,8 @@ void wxDialog::SetModal(bool flag) wxDialog::~wxDialog() { + m_isBeingDeleted = TRUE; + if (m_mainWidget) XtRemoveEventHandler((Widget) m_mainWidget, ExposureMask, FALSE, wxUniversalRepaintProc, (XtPointer) this); @@ -326,6 +331,45 @@ void wxDialog::Iconize(bool WXUNUSED(iconize)) // XtVaSetValues((Widget) m_mainWidget, XmNiconic, iconize, NULL); } +// Default resizing behaviour - if only ONE subwindow, +// resize to client rectangle size +void wxDialog::OnSize(wxSizeEvent& WXUNUSED(event)) +{ + // if we're using constraints - do use them +#if wxUSE_CONSTRAINTS + if ( GetAutoLayout() ) { + Layout(); + return; + } +#endif + + // do we have _exactly_ one child? + wxWindow *child = NULL; + for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) + { + wxWindow *win = (wxWindow *)node->Data(); + if ( !win->IsKindOf(CLASSINFO(wxFrame)) && + !win->IsKindOf(CLASSINFO(wxDialog)) ) + { + if ( child ) + return; // it's our second subwindow - nothing to do + child = win; + } + } + + if ( child ) { + // we have exactly one child - set it's size to fill the whole frame + int clientW, clientH; + GetClientSize(&clientW, &clientH); + + int x = 0; + int y = 0; + + child->SetSize(x, y, clientW, clientH); + } +} + + bool wxDialog::IsIconized() const { /* @@ -529,7 +573,7 @@ void wxDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) } } -void wxDialog::OnCloseWindow(wxCloseEvent& event) +void wxDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { // We'll send a Cancel message by default, // which may close the dialog.