X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ed403dc4cd40229eec00e5ff2a4771fbb356892..f7f8a13c0466725ffffc0cbe9f10da729c3423dd:/src/common/cshelp.cpp diff --git a/src/common/cshelp.cpp b/src/common/cshelp.cpp index 2a16628047..26484e26a2 100644 --- a/src/common/cshelp.cpp +++ b/src/common/cshelp.cpp @@ -4,7 +4,6 @@ // Author: Julian Smart, Vadim Zeitlin // Modified by: // Created: 08/09/2000 -// RCS-ID: $Id$ // Copyright: (c) 2000 Julian Smart, Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -28,12 +27,17 @@ #ifndef WX_PRECOMP #include "wx/app.h" + #include "wx/module.h" #endif #include "wx/tipwin.h" -#include "wx/module.h" #include "wx/cshelp.h" +#if wxUSE_MS_HTML_HELP + #include "wx/msw/helpchm.h" // for ShowContextHelpPopup + #include "wx/utils.h" // for wxGetMousePosition() +#endif + // ---------------------------------------------------------------------------- // wxContextHelpEvtHandler private class // ---------------------------------------------------------------------------- @@ -53,7 +57,7 @@ public: //// Data wxContextHelp* m_contextHelp; - DECLARE_NO_COPY_CLASS(wxContextHelpEvtHandler) + wxDECLARE_NO_COPY_CLASS(wxContextHelpEvtHandler); }; // ============================================================================ @@ -118,8 +122,8 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) wxCursor oldCursor = win->GetCursor(); win->SetCursor(cursor); -#ifdef __WXMSW__ - // wxSetCursor(cursor); +#ifdef __WXMAC__ + wxSetCursor(cursor); #endif m_status = false; @@ -144,6 +148,10 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) win->SetCursor(oldCursor); +#ifdef __WXMAC__ + wxSetCursor(wxNullCursor); +#endif + if (m_status) { wxPoint pt; @@ -223,7 +231,7 @@ bool wxContextHelpEvtHandler::ProcessEvent(wxEvent& event) // Dispatch the help event to the relevant window bool wxContextHelp::DispatchEvent(wxWindow* win, const wxPoint& pt) { - wxCHECK_MSG( win, false, _T("win parameter can't be NULL") ); + wxCHECK_MSG( win, false, wxT("win parameter can't be NULL") ); wxHelpEvent helpEvent(wxEVT_HELP, win->GetId(), pt, wxHelpEvent::Origin_HelpButton); @@ -275,7 +283,7 @@ wxContextHelpButton::wxContextHelpButton(wxWindow* parent, long style) #if defined(__WXPM__) : wxBitmapButton(parent, id, wxBitmap(wxCSQUERY_BITMAP - ,wxBITMAP_TYPE_RESOURCE + ,wxBITMAP_TYPE_BMP_RESOURCE ), pos, size, style) #else @@ -294,7 +302,7 @@ void wxContextHelpButton::OnContextHelp(wxCommandEvent& WXUNUSED(event)) // wxHelpProvider // ---------------------------------------------------------------------------- -wxHelpProvider *wxHelpProvider::ms_helpProvider = (wxHelpProvider *)NULL; +wxHelpProvider *wxHelpProvider::ms_helpProvider = NULL; // trivial implementation of some methods which we don't want to make pure // virtual for convenience @@ -323,7 +331,7 @@ wxString wxHelpProvider::GetHelpTextMaybeAtPoint(wxWindowBase *window) if ( m_helptextAtPoint != wxDefaultPosition || m_helptextOrigin != wxHelpEvent::Origin_Unknown ) { - wxCHECK_MSG( window, wxEmptyString, _T("window must not be NULL") ); + wxCHECK_MSG( window, wxEmptyString, wxT("window must not be NULL") ); wxPoint pt = m_helptextAtPoint; wxHelpEvent::Origin origin = m_helptextOrigin; @@ -378,29 +386,51 @@ void wxSimpleHelpProvider::RemoveHelp(wxWindowBase* window) bool wxSimpleHelpProvider::ShowHelp(wxWindowBase *window) { -#if wxUSE_TIPWINDOW - static wxTipWindow* s_tipWindow = NULL; - - if (s_tipWindow) - { - // Prevent s_tipWindow being nulled in OnIdle, - // thereby removing the chance for the window to be closed by ShowHelp - s_tipWindow->SetTipWindowPtr(NULL); - s_tipWindow->Close(); - } - s_tipWindow = NULL; +#if wxUSE_MS_HTML_HELP || wxUSE_TIPWINDOW +#if wxUSE_MS_HTML_HELP + // m_helptextAtPoint will be reset by GetHelpTextMaybeAtPoint(), stash it + const wxPoint posTooltip = m_helptextAtPoint; +#endif // wxUSE_MS_HTML_HELP const wxString text = GetHelpTextMaybeAtPoint(window); + if ( !text.empty() ) { - s_tipWindow = new wxTipWindow((wxWindow *)window, text, - 100, &s_tipWindow); + // use the native help popup style if it's available +#if wxUSE_MS_HTML_HELP + if ( !wxCHMHelpController::ShowContextHelpPopup + ( + text, + posTooltip, + (wxWindow *)window + ) ) +#endif // wxUSE_MS_HTML_HELP + { +#if wxUSE_TIPWINDOW + static wxTipWindow* s_tipWindow = NULL; + + if ( s_tipWindow ) + { + // Prevent s_tipWindow being nulled in OnIdle, thereby removing + // the chance for the window to be closed by ShowHelp + s_tipWindow->SetTipWindowPtr(NULL); + s_tipWindow->Close(); + } + + s_tipWindow = new wxTipWindow((wxWindow *)window, text, + 100, &s_tipWindow); +#else // !wxUSE_TIPWINDOW + // we tried wxCHMHelpController but it failed and we don't have + // wxTipWindow to fall back on, so + return false; +#endif // wxUSE_TIPWINDOW + } return true; } -#else +#else // !wxUSE_MS_HTML_HELP && !wxUSE_TIPWINDOW wxUnusedVar(window); -#endif // wxUSE_TIPWINDOW +#endif // wxUSE_MS_HTML_HELP || wxUSE_TIPWINDOW return false; } @@ -441,7 +471,7 @@ bool wxHelpControllerHelpProvider::ShowHelp(wxWindowBase *window) // Convenience function for turning context id into wxString wxString wxContextId(int id) { - return wxString::Format(_T("%d"), id); + return wxString::Format(wxT("%d"), id); } // ----------------------------------------------------------------------------