From bd45b3e1766beb235778b76c7d8fe85ed36076c3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 18 Mar 2011 09:16:14 +0000 Subject: [PATCH] Add wxHtmlHelpController::SetShouldPreventAppExit(). Add a method which can be used to indicate that the help window should prevent the application from exiting and use it in the help sample to prevent it from closing prematurely. Closes #13046. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/html/helpctrl.h | 4 ++++ include/wx/html/helpfrm.h | 5 ++++- interface/wx/html/helpctrl.h | 15 +++++++++++++++ samples/html/helpview/helpview.cpp | 2 ++ src/html/helpctrl.cpp | 9 +++++++++ src/html/helpfrm.cpp | 6 ++++++ 6 files changed, 40 insertions(+), 1 deletion(-) 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)) { -- 2.47.2