diff --git a/include/wx/html/helpctrl.h b/include/wx/html/helpctrl.h index 13c346ecb0..c266ae6fc1 100644 --- a/include/wx/html/helpctrl.h +++ b/include/wx/html/helpctrl.h @@ -48,6 +48,8 @@ public: wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, wxWindow* parentWindow = NULL); virtual ~wxHtmlHelpController(); + void SetShouldPreventAppExit(bool enable); + void SetTitleFormat(const wxString& format); void SetTempDir(const wxString& path) { m_helpData.SetTempDir(path); } bool AddBook(const wxString& book_url, bool show_wait_msg = false); @@ -129,6 +131,8 @@ protected: wxHtmlHelpFrame* m_helpFrame; wxHtmlHelpDialog* m_helpDialog; + bool m_shouldPreventAppExit; + wxDECLARE_NO_COPY_CLASS(wxHtmlHelpController); }; diff --git a/include/wx/html/helpfrm.h b/include/wx/html/helpfrm.h index a678ef60a8..85056a86a5 100644 --- a/include/wx/html/helpfrm.h +++ b/include/wx/html/helpfrm.h @@ -115,9 +115,11 @@ public: // Override to add custom buttons to the toolbar virtual void AddToolbarButtons(wxToolBar* WXUNUSED(toolBar), int WXUNUSED(style)) {} + void SetShouldPreventAppExit(bool enable); + // we don't want to prevent the app from closing just because a help window // remains opened - virtual bool ShouldPreventAppExit() const { return false; } + virtual bool ShouldPreventAppExit() const { return m_shouldPreventAppExit; } protected: void Init(wxHtmlHelpData* data = NULL); @@ -143,6 +145,7 @@ protected: wxString m_TitleFormat; // title of the help frame wxHtmlHelpWindow *m_HtmlHelpWin; wxHtmlHelpController* m_helpController; + bool m_shouldPreventAppExit; private: diff --git a/interface/wx/html/helpctrl.h b/interface/wx/html/helpctrl.h index 54b5b1acaf..aed23de6d3 100644 --- a/interface/wx/html/helpctrl.h +++ b/interface/wx/html/helpctrl.h @@ -171,6 +171,21 @@ public: virtual void ReadCustomization(wxConfigBase* cfg, const wxString& path = wxEmptyString); + /** + Sets whether the help frame should prevent application from exiting + if it's the only remaining top level window. + + @enable + If @true, the application will not quit unless the help frame is + closed. Default is @false, i.e. the application does exit if only + the help window remains opened. + + @see wxApp::SetExitOnFrameDelete() + + @since 2.9.2 + */ + void SetShouldPreventAppExit(bool enable); + /** Sets the path for storing temporary files - cached binary versions of index and contents files. diff --git a/samples/html/helpview/helpview.cpp b/samples/html/helpview/helpview.cpp index a0b28929ed..f0fba2d056 100644 --- a/samples/html/helpview/helpview.cpp +++ b/samples/html/helpview/helpview.cpp @@ -86,6 +86,8 @@ bool MyApp::OnInit() delete wxLog::SetActiveTarget(new wxLogGui); #endif + help->SetShouldPreventAppExit(true); + help -> DisplayContents(); return true; diff --git a/src/html/helpctrl.cpp b/src/html/helpctrl.cpp index d093b99b73..faad6fb6e0 100644 --- a/src/html/helpctrl.cpp +++ b/src/html/helpctrl.cpp @@ -52,6 +52,7 @@ wxHtmlHelpController::wxHtmlHelpController(int style, wxWindow* parentWindow): #endif // wxUSE_CONFIG m_titleFormat = _("Help: %s"); m_FrameStyle = style; + m_shouldPreventAppExit = false; } wxHtmlHelpController::~wxHtmlHelpController() @@ -105,6 +106,13 @@ void wxHtmlHelpController::OnCloseFrame(wxCloseEvent& evt) m_helpFrame = NULL; } +void wxHtmlHelpController::SetShouldPreventAppExit(bool enable) +{ + m_shouldPreventAppExit = enable; + if ( m_helpFrame ) + m_helpFrame->SetShouldPreventAppExit(enable); +} + void wxHtmlHelpController::SetTitleFormat(const wxString& title) { m_titleFormat = title; @@ -163,6 +171,7 @@ wxHtmlHelpFrame* wxHtmlHelpController::CreateHelpFrame(wxHtmlHelpData *data) #endif // wxUSE_CONFIG ); frame->SetTitleFormat(m_titleFormat); + frame->SetShouldPreventAppExit(m_shouldPreventAppExit); m_helpFrame = frame; return frame; } diff --git a/src/html/helpfrm.cpp b/src/html/helpfrm.cpp index 9020ad8b55..c726a936eb 100644 --- a/src/html/helpfrm.cpp +++ b/src/html/helpfrm.cpp @@ -89,6 +89,7 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data) m_Data = data; m_HtmlHelpWin = NULL; m_helpController = NULL; + m_shouldPreventAppExit = false; } void wxHtmlHelpFrame::SetController(wxHtmlHelpController* controller) @@ -246,6 +247,11 @@ void wxHtmlHelpFrame::UseConfig(wxConfigBase *config, const wxString& rootPath) } #endif // wxUSE_CONFIG +void wxHtmlHelpFrame::SetShouldPreventAppExit(bool enable) +{ + m_shouldPreventAppExit = enable; +} + #ifdef __WXMAC__ void wxHtmlHelpFrame::OnClose(wxCommandEvent& WXUNUSED(event)) {