diff --git a/docs/latex/wx/wizard.tex b/docs/latex/wx/wizard.tex index 5bb32f8170..ebe73802ee 100644 --- a/docs/latex/wx/wizard.tex +++ b/docs/latex/wx/wizard.tex @@ -55,6 +55,7 @@ changed (this event can be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_CANCEL(id, func)}}{The user attempted to cancel the wizard (this event may also be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_HELP(id, func)}}{The wizard help button was pressed.} +\twocolitem{{\bf EVT\_WIZARD\_FINISHED(id, func)}}{The wizard finished button was pressed.} \end{twocollist}% \wxheading{Extended styles} diff --git a/docs/latex/wx/wizevt.tex b/docs/latex/wx/wizevt.tex index d375939ec4..1d0ba404b5 100644 --- a/docs/latex/wx/wizevt.tex +++ b/docs/latex/wx/wizevt.tex @@ -40,6 +40,7 @@ changed (this event can be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_CANCEL(id, func)}}{The user attempted to cancel the wizard (this event may also be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_HELP(id, func)}}{The wizard help button was pressed.} +\twocolitem{{\bf EVT\_WIZARD\_FINISHED(id, func)}}{The wizard finished button was pressed.} \end{twocollist}% \wxheading{See also} diff --git a/include/wx/wizard.h b/include/wx/wizard.h index 8ff916d7a0..db4dbbf752 100644 --- a/include/wx/wizard.h +++ b/include/wx/wizard.h @@ -253,6 +253,7 @@ BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING, 901) DECLARE_EVENT_TYPE(wxEVT_WIZARD_CANCEL, 902) DECLARE_EVENT_TYPE(wxEVT_WIZARD_HELP, 903) + DECLARE_EVENT_TYPE(wxEVT_WIZARD_FINISHED, 903) END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); @@ -268,6 +269,9 @@ typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); // unless the event handler vetoes the event #define EVT_WIZARD_CANCEL(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_CANCEL, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +// the user pressed "Finish" button and the wizard is going to be dismissed - +#define EVT_WIZARD_FINISHED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_FINISHED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), + // the user pressed "Help" button #define EVT_WIZARD_HELP(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index c438b292c5..fbc3fc7d5b 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -57,6 +57,7 @@ WX_DEFINE_ARRAY(wxPanel *, wxArrayPages); DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING) DEFINE_EVENT_TYPE(wxEVT_WIZARD_CANCEL) +DEFINE_EVENT_TYPE(wxEVT_WIZARD_FINISHED) DEFINE_EVENT_TYPE(wxEVT_WIZARD_HELP) BEGIN_EVENT_TABLE(wxWizard, wxDialog) @@ -68,6 +69,7 @@ BEGIN_EVENT_TABLE(wxWizard, wxDialog) EVT_WIZARD_PAGE_CHANGED(-1, wxWizard::OnWizEvent) EVT_WIZARD_PAGE_CHANGING(-1, wxWizard::OnWizEvent) EVT_WIZARD_CANCEL(-1, wxWizard::OnWizEvent) + EVT_WIZARD_FINISHED(-1, wxWizard::OnWizEvent) EVT_WIZARD_HELP(-1, wxWizard::OnWizEvent) END_EVENT_TABLE() @@ -365,6 +367,11 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) { // terminate successfully EndModal(wxID_OK); + if ( !IsModal() ) + { + wxWizardEvent event(wxEVT_WIZARD_FINISHED, GetId(),FALSE, 0); + (void)GetEventHandler()->ProcessEvent(event); + } return TRUE; }