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))
{