Better fix for modal/modeless wizards.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
dfdc483a23
commit
94c09a19ec
@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: generic/wizard.h
|
// Name: wx/generic/wizard.h
|
||||||
// Purpose: declaration of generic wxWizard class
|
// Purpose: declaration of generic wxWizard class
|
||||||
// Author: Vadim Zeitlin
|
// Author: Vadim Zeitlin
|
||||||
// Modified by: Robert Vazan (sizers)
|
// Modified by: Robert Vazan (sizers)
|
||||||
@ -113,6 +113,9 @@ private:
|
|||||||
// Whether RunWizard() was called
|
// Whether RunWizard() was called
|
||||||
bool m_started;
|
bool m_started;
|
||||||
|
|
||||||
|
// Whether was modal (modeless has to be destroyed on finish or cancel)
|
||||||
|
bool m_wasModal;
|
||||||
|
|
||||||
// Page area sizer will be inserted here with padding
|
// Page area sizer will be inserted here with padding
|
||||||
wxBoxSizer *m_sizerBmpAndPage;
|
wxBoxSizer *m_sizerBmpAndPage;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: generic/wizard.cpp
|
// Name: src/generic/wizard.cpp
|
||||||
// Purpose: generic implementation of wxWizard class
|
// Purpose: generic implementation of wxWizard class
|
||||||
// Author: Vadim Zeitlin
|
// Author: Vadim Zeitlin
|
||||||
// Modified by: Robert Cavanaugh
|
// Modified by: Robert Cavanaugh
|
||||||
@ -263,10 +263,6 @@ wxSize wxWizardSizer::SiblingSize(wxSizerItem *child)
|
|||||||
// generic wxWizard implementation
|
// generic wxWizard implementation
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
// FIXME: this is a hack
|
|
||||||
WX_DEFINE_ARRAY_PTR(wxWizard *, wxModelessWizards);
|
|
||||||
static wxModelessWizards modelessWizards;
|
|
||||||
|
|
||||||
void wxWizard::Init()
|
void wxWizard::Init()
|
||||||
{
|
{
|
||||||
m_posWizard = wxDefaultPosition;
|
m_posWizard = wxDefaultPosition;
|
||||||
@ -278,7 +274,7 @@ void wxWizard::Init()
|
|||||||
m_calledSetBorder = false;
|
m_calledSetBorder = false;
|
||||||
m_border = 0;
|
m_border = 0;
|
||||||
m_started = false;
|
m_started = false;
|
||||||
modelessWizards.Add(this);
|
m_wasModal = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxWizard::Create(wxWindow *parent,
|
bool wxWizard::Create(wxWindow *parent,
|
||||||
@ -661,7 +657,7 @@ bool wxWizard::RunWizard(wxWizardPage *firstPage)
|
|||||||
// can't return false here because there is no old page
|
// can't return false here because there is no old page
|
||||||
(void)ShowPage(firstPage, true /* forward */);
|
(void)ShowPage(firstPage, true /* forward */);
|
||||||
|
|
||||||
modelessWizards.Remove(this);
|
m_wasModal = true;
|
||||||
|
|
||||||
return ShowModal() == wxID_OK;
|
return ShowModal() == wxID_OK;
|
||||||
}
|
}
|
||||||
@ -805,14 +801,13 @@ void wxWizard::OnWizEvent(wxWizardEvent& event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( modelessWizards.Index(this) != wxNOT_FOUND ) &&
|
if ( ( !m_wasModal ) &&
|
||||||
event.IsAllowed() &&
|
event.IsAllowed() &&
|
||||||
( event.GetEventType() == wxEVT_WIZARD_FINISHED ||
|
( event.GetEventType() == wxEVT_WIZARD_FINISHED ||
|
||||||
event.GetEventType() == wxEVT_WIZARD_CANCEL
|
event.GetEventType() == wxEVT_WIZARD_CANCEL
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
modelessWizards.Remove(this);
|
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user