]> git.saurik.com Git - wxWidgets.git/commitdiff
Added parent window parameter to wxHelpController constructor
authorJulian Smart <julian@anthemion.co.uk>
Wed, 26 Oct 2005 09:32:10 +0000 (09:32 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Wed, 26 Oct 2005 09:32:10 +0000 (09:32 +0000)
and added SetParentWindow/GetParentWindow.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36017 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
docs/changes.txt
docs/latex/wx/helpinst.tex
include/wx/generic/helpext.h
include/wx/helpbase.h
include/wx/html/helpctrl.h
include/wx/msw/helpbest.h
include/wx/msw/helpchm.h
include/wx/msw/helpwin.h
include/wx/msw/wince/helpwce.h
src/generic/helpext.cpp
src/html/helpctrl.cpp
src/msw/helpbest.cpp
src/msw/helpchm.cpp
src/msw/helpwin.cpp

index 1145156eb971988fc9e6b3cd04e173d4c7e21ac7..262d9f5b6e0ad1f910be1cce6f603f78934e9770 100644 (file)
@@ -22,6 +22,8 @@ All (GUI):
 - All book based controls (notebook, treebook etc.) share now the same
   options for orientation (wxBK_TOP, wxBK_DEFAULT, ...) instead of duplicated
   wxLB_TOP, wxNB_TOP, wxCHB_TOP, wxTBK_TOP.
+- Added parent window parameter to wxHelpController constructor
+  and added SetParentWindow/GetParentWindow.
 
 wxMSW:
 
index 3aa871d06b142232bf7206141873731bdf2c4f6c..9e660aab5d2dbacd7e5e8819c74cad7ec29ba65d 100644 (file)
@@ -73,10 +73,15 @@ wxHelpControllerBase\\
 
 \membersection{wxHelpController::wxHelpController}\label{wxhelpcontrollerctor}
 
-\func{}{wxHelpController}{\void}
+\func{}{wxHelpController}{\param{wxWindow*}{ parentWindow = NULL}}
 
 Constructs a help instance object, but does not invoke the help viewer.
 
+If you provide a window, it will be used by some help controller classes, such as
+wxCHMHelpController, wxWinHelpController and wxHtmlHelpController, as the
+parent for the help window instead of the value of \helpref{wxApp::GetTopWindow}{wxappgettopwindow}. You can also change the parent window later with 
+\helpref{wxHelpController::SetParentWindow}{wxhelpcontrollersetparentwindow}.
+
 \membersection{wxHelpController::\destruct{wxHelpController}}\label{wxhelpcontrollerdtor}
 
 \func{}{\destruct{wxHelpController}}{\void}
@@ -184,6 +189,13 @@ and just returns NULL.
 \docparam{flags}{This defaults to wxHELP\_NETSCAPE for wxExtHelpController, indicating
 that the viewer is a variant of Netscape Navigator.}
 
+\membersection{wxHelpController::GetParentWindow}\label{wxhelpcontrollergetparentwindow}
+
+\constfunc{virtual bool}{GetParentWindow}{\void}
+
+Returns the window to be used as the parent for the help window. This window is used
+by wxCHMHelpController, wxWinHelpController and wxHtmlHelpController.
+
 \membersection{wxHelpController::KeywordSearch}\label{wxhelpcontrollerkeywordsearch}
 
 \func{virtual bool}{KeywordSearch}{\param{const wxString\& }{keyWord}, \param{wxHelpSearchMode }{mode = wxHELP\_SEARCH\_ALL}}
@@ -235,6 +247,13 @@ open. {\it newFrameEachTime} is ignored.
 
 For all other help controllers this function has no effect.
 
+\membersection{wxHelpController::SetParentWindow}\label{wxhelpcontrollersetparentwindow}
+
+\func{virtual void}{SetParentWindow}{\param{wxWindow* }{parentWindow}}
+
+Sets the window to be used as the parent for the help window. This is used
+by wxCHMHelpController, wxWinHelpController and wxHtmlHelpController.
+
 \membersection{wxHelpController::SetViewer}\label{wxhelpcontrollersetviewer}
 
 \func{virtual void}{SetViewer}{\param{const wxString\& }{viewer}, \param{long}{ flags}}
index 107ad52b2f67e6a8f95af9c8493e814dc4815b13..aaad7d3ff3abc9b76ae0052bbb69140c669da6be 100644 (file)
@@ -55,7 +55,7 @@ class WXDLLIMPEXP_ADV wxExtHelpController : public wxHelpControllerBase
 {
 DECLARE_CLASS(wxExtHelpController)
    public:
-   wxExtHelpController();
+   wxExtHelpController(wxWindow* parentWindow = NULL);
    ~wxExtHelpController();
 
    /** Tell it which browser to use.
index 295088d4dd02f25d1d2d205cb29cfb83a316b79e..613a87477c236ea29e50e3b615a2745ef5c16227 100644 (file)
@@ -35,7 +35,7 @@ enum wxHelpSearchMode
 class WXDLLEXPORT wxHelpControllerBase: public wxObject
 {
 public:
-    inline wxHelpControllerBase() {}
+    inline wxHelpControllerBase(wxWindow* parentWindow = NULL) { m_parentWindow = parentWindow; }
     inline ~wxHelpControllerBase() {}
 
     // Must call this to set the filename and server name.
@@ -88,6 +88,14 @@ public:
     virtual bool Quit() = 0;
     virtual void OnQuit() {}
 
+    /// Set the window that can optionally be used for the help window's parent.
+    virtual void SetParentWindow(wxWindow* win) { m_parentWindow = win; }
+
+    /// Get the window that can optionally be used for the help window's parent.
+    virtual wxWindow* GetParentWindow() const { return m_parentWindow; }
+
+protected:
+    wxWindow* m_parentWindow;
 private:
     DECLARE_CLASS(wxHelpControllerBase)
 };
index e4efdcbbc6d35d27c1ef780b670fada1e4447897..a82c411e5329929bac61ead4242d99de81c58b94 100644 (file)
@@ -26,7 +26,7 @@ class WXDLLIMPEXP_HTML wxHtmlHelpController : public wxHelpControllerBase // wxE
     DECLARE_DYNAMIC_CLASS(wxHtmlHelpController)
 
 public:
-    wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE);
+    wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE, wxWindow* parentWindow = NULL);
     virtual ~wxHtmlHelpController();
 
     void SetTitleFormat(const wxString& format);
index b5e7d83a44ca92dbee20ad93d837779c2d579e1e..a05c4e14ded9077f33fe41659e07b6174f7ca1cf 100644 (file)
@@ -20,8 +20,8 @@
 class WXDLLIMPEXP_HTML wxBestHelpController: public wxHelpControllerBase
 {
 public:
-    wxBestHelpController()
-        : m_helpControllerType( wxUseNone ),
+    wxBestHelpController(wxWindow* parentWindow = NULL)
+        : wxHelpControllerBase( parentWindow ), m_helpControllerType( wxUseNone ),
           m_helpController( NULL )
     {
     }
@@ -98,6 +98,12 @@ public:
                                                      newFrameEachTime );
     }
 
+    /// Set the window that can optionally be used for the help window's parent.
+    virtual void SetParentWindow(wxWindow* win) { m_helpController->SetParentWindow(win); }
+
+    /// Get the window that can optionally be used for the help window's parent.
+    virtual wxWindow* GetParentWindow() const { return m_helpController->GetParentWindow(); }
+
 protected:
     // Append/change extension if necessary.
     wxString GetValidFilename(const wxString& file) const;
index 4a9fd55a858a5aa038bfe58a245fd72bf66d2e8a..72afc643dc2fb06618f30b97846fa56695de322e 100644 (file)
@@ -19,7 +19,7 @@
 class WXDLLEXPORT wxCHMHelpController : public wxHelpControllerBase
 {
 public:
-    wxCHMHelpController() { }
+    wxCHMHelpController(wxWindow* parentWindow = NULL): wxHelpControllerBase(parentWindow) { }
     virtual ~wxCHMHelpController();
 
     // Must call this to set the filename
index d5f1a2626d8d67a445e4729c9a30464b7f1c6b4c..2bb07163950c843dabe200a59db0fe4e466dae03 100644 (file)
@@ -23,7 +23,7 @@ class WXDLLEXPORT wxWinHelpController: public wxHelpControllerBase
     DECLARE_CLASS(wxWinHelpController)
 
 public:
-    wxWinHelpController() {}
+    wxWinHelpController(wxWindow* parentWindow = NULL): wxHelpControllerBase(parentWindow) {}
     ~wxWinHelpController() {}
 
     // Must call this to set the filename
index c8fb31a2e329b32f9df1be1ec425b6bd27892e93..735a6cbc1d7826f07f5e0d496ea8ecc7ccc549ee 100644 (file)
@@ -19,7 +19,7 @@
 class WXDLLEXPORT wxWinceHelpController : public wxHelpControllerBase
 {
 public:
-    wxWinceHelpController() {}
+    wxWinceHelpController(wxWindow* parentWindow): wxHelpControllerBase(parentWindow) {}
     virtual ~wxWinceHelpController() {}
 
     // Must call this to set the filename
index f52d28f367edcb80e682341ab2d42545830f012e..0b498470a0f0a5d45dc447af6d08664e7b07faaf 100644 (file)
@@ -70,7 +70,8 @@ IMPLEMENT_CLASS(wxExtHelpController, wxHelpControllerBase)
    and a file mapping numerical Section numbers to relative URLS.
 */
 
-wxExtHelpController::wxExtHelpController()
+wxExtHelpController::wxExtHelpController(wxWindow* parentWindow):
+    wxHelpControllerBase(parentWindow)
 {
    m_MapList = (wxList*) NULL;
    m_NumOfEntries = 0;
index 5ec371074d916ffa5a677b15e86e40a0aeecab04..c52512ab365bed9d140679fd9438494146e9064b 100644 (file)
@@ -43,7 +43,8 @@ FORCE_LINK(wxhtml_chm_support)
 
 IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase)
 
-wxHtmlHelpController::wxHtmlHelpController(int style)
+wxHtmlHelpController::wxHtmlHelpController(int style, wxWindow* parentWindow):
+    wxHelpControllerBase(parentWindow)
 {
     m_helpFrame = NULL;
     m_Config = NULL;
@@ -144,7 +145,7 @@ void wxHtmlHelpController::CreateHelpWindow()
     if (m_Config)
         m_helpFrame->UseConfig(m_Config, m_ConfigRoot);
 
-    m_helpFrame->Create(NULL, wxID_HTML_HELPFRAME, wxEmptyString, m_FrameStyle);
+    m_helpFrame->Create(GetParentWindow(), wxID_HTML_HELPFRAME, wxEmptyString, m_FrameStyle);
     m_helpFrame->SetTitleFormat(m_titleFormat);
 
     m_helpFrame->Show(true);
index 4f656a752e1afa72d1611d8ddde436910a76d621..53244390bd9558b574ab6fc39d73c86d80662f64 100644 (file)
@@ -35,7 +35,7 @@ IMPLEMENT_DYNAMIC_CLASS( wxBestHelpController, wxHelpControllerBase )
 bool wxBestHelpController::Initialize( const wxString& filename )
 {
     // try wxCHMHelpController
-    wxCHMHelpController* chm = new wxCHMHelpController;
+    wxCHMHelpController* chm = new wxCHMHelpController(m_parentWindow);
 
     m_helpControllerType = wxUseChmHelp;
     // do not warn upon failure
@@ -44,6 +44,7 @@ bool wxBestHelpController::Initialize( const wxString& filename )
     if( chm->Initialize( GetValidFilename( filename ) ) )
     {
         m_helpController = chm;
+        m_parentWindow = NULL;
         return true;
     }
 
@@ -51,12 +52,13 @@ bool wxBestHelpController::Initialize( const wxString& filename )
     delete chm;
 
     // try wxHtmlHelpController
-    wxHtmlHelpController* html = new wxHtmlHelpController;
+    wxHtmlHelpController* html = new wxHtmlHelpController(wxHF_DEFAULT_STYLE, m_parentWindow);
 
     m_helpControllerType = wxUseHtmlHelp;
     if( html->Initialize( GetValidFilename( filename ) ) )
     {
         m_helpController = html;
+        m_parentWindow = NULL;
         return true;
     }
 
index a34d2069c37cbd5685216a82bddd25f22c4b9621..4bd7467b28ec13239b71bec3fea86062bfd5329a 100644 (file)
@@ -81,9 +81,11 @@ static void UnloadHtmlHelpLibrary()
     }
 }
 
-static HWND GetSuitableHWND()
+static HWND GetSuitableHWND(wxCHMHelpController* controller)
 {
-    if (wxTheApp->GetTopWindow())
+    if (controller->GetParentWindow())
+        return (HWND) controller->GetParentWindow()->GetHWND();
+    else if (wxTheApp->GetTopWindow())
         return (HWND) wxTheApp->GetTopWindow()->GetHWND();
     else
         return GetDesktopWindow();
@@ -114,7 +116,7 @@ bool wxCHMHelpController::DisplayContents()
 
     wxString str = GetValidFilename(m_helpFile);
 
-    gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_DISPLAY_TOPIC, 0L);
+    gs_htmlHelp(GetSuitableHWND(this), (const wxChar*) str, HH_DISPLAY_TOPIC, 0L);
     return true;
 }
 
@@ -129,7 +131,7 @@ bool wxCHMHelpController::DisplaySection(const wxString& section)
     bool isFilename = (section.Find(wxT(".htm")) != wxNOT_FOUND);
 
     if (isFilename)
-        gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_DISPLAY_TOPIC, (DWORD) (const wxChar*) section);
+        gs_htmlHelp(GetSuitableHWND(this), (const wxChar*) str, HH_DISPLAY_TOPIC, (DWORD) (const wxChar*) section);
     else
         KeywordSearch(section);
     return true;
@@ -142,7 +144,7 @@ bool wxCHMHelpController::DisplaySection(int section)
 
     wxString str = GetValidFilename(m_helpFile);
 
-    gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_HELP_CONTEXT, (DWORD)section);
+    gs_htmlHelp(GetSuitableHWND(this), (const wxChar*) str, HH_HELP_CONTEXT, (DWORD)section);
     return true;
 }
 
@@ -167,7 +169,7 @@ bool wxCHMHelpController::DisplayContextPopup(int contextId)
     popup.pszFont = NULL;
     popup.pszText = NULL;
 
-    gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_DISPLAY_TEXT_POPUP, (DWORD) & popup);
+    gs_htmlHelp(GetSuitableHWND(this), (const wxChar*) str, HH_DISPLAY_TEXT_POPUP, (DWORD) & popup);
     return true;
 }
 
@@ -184,7 +186,7 @@ bool wxCHMHelpController::DisplayTextPopup(const wxString& text, const wxPoint&
     popup.pszFont = NULL;
     popup.pszText = (const wxChar*) text;
 
-    gs_htmlHelp(GetSuitableHWND(), NULL, HH_DISPLAY_TEXT_POPUP, (DWORD) & popup);
+    gs_htmlHelp(GetSuitableHWND(this), NULL, HH_DISPLAY_TEXT_POPUP, (DWORD) & popup);
     return true;
 }
 
@@ -210,13 +212,13 @@ bool wxCHMHelpController::KeywordSearch(const wxString& k,
     link.pszWindow =    NULL ;
     link.fIndexOnFail = TRUE ;
 
-    gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_KEYWORD_LOOKUP, (DWORD)& link);
+    gs_htmlHelp(GetSuitableHWND(this), (const wxChar*) str, HH_KEYWORD_LOOKUP, (DWORD)& link);
     return true;
 }
 
 bool wxCHMHelpController::Quit()
 {
-    gs_htmlHelp(GetSuitableHWND(), 0, HH_CLOSE_ALL, 0L);
+    gs_htmlHelp(GetSuitableHWND(this), 0, HH_CLOSE_ALL, 0L);
 
     return true;
 }
index a65b579e4c765329026518e3c6eadfa25fdf6149..1fa93f0fe60d66d59a8dda3d3ee2baf679da47b3 100644 (file)
 
 #include <string.h>
 
-static HWND GetSuitableHWND()
+static HWND GetSuitableHWND(wxWinHelpController* controller)
 {
-    if (wxTheApp->GetTopWindow())
+    if (controller->GetParentWindow())
+        return (HWND) controller->GetParentWindow()->GetHWND();
+    else if (wxTheApp->GetTopWindow())
         return (HWND) wxTheApp->GetTopWindow()->GetHWND();
     else
         return GetDesktopWindow();
@@ -63,9 +65,9 @@ bool wxWinHelpController::DisplayContents(void)
     wxString str = GetValidFilename(m_helpFile);
 
 #if defined(__WIN95__)
-    return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_FINDER, 0L) != 0);
+    return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_FINDER, 0L) != 0);
 #else
-    return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_CONTENTS, 0L) != 0);
+    return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_CONTENTS, 0L) != 0);
 #endif
 }
 
@@ -76,7 +78,7 @@ bool wxWinHelpController::DisplaySection(int section)
 
     wxString str = GetValidFilename(m_helpFile);
 
-    return (WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)section) != 0);
+    return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_CONTEXT, (DWORD)section) != 0);
 }
 
 bool wxWinHelpController::DisplayContextPopup(int contextId)
@@ -85,7 +87,7 @@ bool wxWinHelpController::DisplayContextPopup(int contextId)
 
     wxString str = GetValidFilename(m_helpFile);
 
-    return (WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXTPOPUP, (DWORD) contextId) != 0);
+    return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_CONTEXTPOPUP, (DWORD) contextId) != 0);
 }
 
 bool wxWinHelpController::DisplayBlock(long block)
@@ -101,13 +103,13 @@ bool wxWinHelpController::KeywordSearch(const wxString& k,
 
     wxString str = GetValidFilename(m_helpFile);
 
-    return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k) != 0);
+    return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k) != 0);
 }
 
 // Can't close the help window explicitly in WinHelp
 bool wxWinHelpController::Quit(void)
 {
-    return (WinHelp(GetSuitableHWND(), 0, HELP_QUIT, 0L) != 0);
+    return (WinHelp(GetSuitableHWND(this), 0, HELP_QUIT, 0L) != 0);
 }
 
 // Append extension if necessary.