X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/977a3818653022ebb20bcce8cdf7e80fc2ad2954..8ca58566a345a030f56b8afc0f45a9abc7228083:/src/generic/wizard.cpp diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index 2e3b5dac7b..84f1f90ed5 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -480,6 +480,9 @@ void wxWizard::SetPageSize(const wxSize& size) void wxWizard::FinishLayout() { + // Set to enable wxWizardSizer::GetMaxChildSize + m_started = true; + m_sizerBmpAndPage->Add( m_sizerPage, 1, // Horizontal stretching @@ -555,7 +558,15 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) if ( !m_page ) { // terminate successfully - EndModal(wxID_OK); + if(IsModal()) + { + EndModal(wxID_OK); + } + else + { + SetReturnCode(wxID_OK); + Hide(); + } // and notify the user code (this is especially useful for modeless // wizards) @@ -625,9 +636,6 @@ bool wxWizard::RunWizard(wxWizardPage *firstPage) { wxCHECK_MSG( firstPage, false, wxT("can't run empty wizard") ); - // Set before FinishLayout to enable wxWizardSizer::GetMaxChildSize - m_started = true; - // This cannot be done sooner, because user can change layout options // up to this moment FinishLayout(); @@ -667,7 +675,11 @@ wxSize wxWizard::GetManualPageSize() const { // default width and height of the page static const int DEFAULT_PAGE_WIDTH = 270; - static const int DEFAULT_PAGE_HEIGHT = 290; + //static const int DEFAULT_PAGE_HEIGHT = 290; + // For compatibility with 2.4: there's too much + // space under the bitmap, probably due to differences in + // the sizer implementation. This makes it reasonable again. + static const int DEFAULT_PAGE_HEIGHT = 270; wxSize totalPageSize(DEFAULT_PAGE_WIDTH,DEFAULT_PAGE_HEIGHT); @@ -691,7 +703,15 @@ void wxWizard::OnCancel(wxCommandEvent& WXUNUSED(eventUnused)) if ( !win->GetEventHandler()->ProcessEvent(event) || event.IsAllowed() ) { // no objections - close the dialog - EndModal(wxID_CANCEL); + if(IsModal()) + { + EndModal(wxID_CANCEL); + } + else + { + SetReturnCode(wxID_CANCEL); + Hide(); + } } //else: request to Cancel ignored } @@ -751,14 +771,25 @@ void wxWizard::OnWizEvent(wxWizardEvent& event) { // the event will be propagated anyhow event.Skip(); - return; } + else + { + wxWindow *parent = GetParent(); - wxWindow *parent = GetParent(); + if ( !parent || !parent->GetEventHandler()->ProcessEvent(event) ) + { + event.Skip(); + } + } - if ( !parent || !parent->GetEventHandler()->ProcessEvent(event) ) + if ( !IsModal() && + event.IsAllowed() && + ( event.GetEventType() == wxEVT_WIZARD_FINISHED || + event.GetEventType() == wxEVT_WIZARD_CANCEL + ) + ) { - event.Skip(); + Destroy(); } }