made it possible to associate context help to a region of a window
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39675 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -151,6 +151,7 @@ All (GUI):
|
|||||||
- Added wxTB_NO_TOOLTIPS style (Igor Korot)
|
- Added wxTB_NO_TOOLTIPS style (Igor Korot)
|
||||||
- Added wxGenericDirCtrl::CollapsePath() (Christian Buhtz)
|
- Added wxGenericDirCtrl::CollapsePath() (Christian Buhtz)
|
||||||
- Fixed 64-bit issue in wxNotebook causing segfaults on Tru64 Unix.
|
- Fixed 64-bit issue in wxNotebook causing segfaults on Tru64 Unix.
|
||||||
|
- Made it possible to associate context help to a region of a window
|
||||||
|
|
||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
|
@@ -18,16 +18,18 @@ No base class
|
|||||||
|
|
||||||
\helpref{wxContextHelp}{wxcontexthelp}, \helpref{wxContextHelpButton}{wxcontexthelpbutton},
|
\helpref{wxContextHelp}{wxcontexthelp}, \helpref{wxContextHelpButton}{wxcontexthelpbutton},
|
||||||
\helpref{wxSimpleHelpProvider}{wxsimplehelpprovider}, \helpref{wxHelpControllerHelpProvider}{wxhelpcontrollerhelpprovider},
|
\helpref{wxSimpleHelpProvider}{wxsimplehelpprovider}, \helpref{wxHelpControllerHelpProvider}{wxhelpcontrollerhelpprovider},
|
||||||
\helpref{wxWindow::SetHelpText}{wxwindowsethelptext}, \helpref{wxWindow::GetHelpText}{wxwindowgethelptext}
|
\helpref{wxWindow::SetHelpText}{wxwindowsethelptext}, \helpref{wxWindow::GetHelpTextAtPoint}{wxwindowgethelptextatpoint}
|
||||||
|
|
||||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::\destruct{wxHelpProvider}}\label{wxhelpproviderdtor}
|
\membersection{wxHelpProvider::\destruct{wxHelpProvider}}\label{wxhelpproviderdtor}
|
||||||
|
|
||||||
\func{}{\destruct{wxHelpProvider}}{\void}
|
\func{}{\destruct{wxHelpProvider}}{\void}
|
||||||
|
|
||||||
Virtual destructor for any base class.
|
Virtual destructor for any base class.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::AddHelp}\label{wxhelpprovideraddhelp}
|
\membersection{wxHelpProvider::AddHelp}\label{wxhelpprovideraddhelp}
|
||||||
|
|
||||||
\func{void}{AddHelp}{\param{wxWindowBase* }{window}, \param{const wxString\& }{text}}
|
\func{void}{AddHelp}{\param{wxWindowBase* }{window}, \param{const wxString\& }{text}}
|
||||||
@@ -36,6 +38,7 @@ Associates the text with the given window or id. Although all help
|
|||||||
providers have these functions to allow making \helpref{wxWindow::SetHelpText}{wxwindowsethelptext}
|
providers have these functions to allow making \helpref{wxWindow::SetHelpText}{wxwindowsethelptext}
|
||||||
work, not all of them implement the functions.
|
work, not all of them implement the functions.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::Get}\label{wxhelpproviderget}
|
\membersection{wxHelpProvider::Get}\label{wxhelpproviderget}
|
||||||
|
|
||||||
\func{wxHelpProvider*}{Get}{\void}
|
\func{wxHelpProvider*}{Get}{\void}
|
||||||
@@ -43,6 +46,7 @@ work, not all of them implement the functions.
|
|||||||
Unlike some other classes, the help provider is not created on demand.
|
Unlike some other classes, the help provider is not created on demand.
|
||||||
This must be explicitly done by the application.
|
This must be explicitly done by the application.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::GetHelp}\label{wxhelpprovidergethelp}
|
\membersection{wxHelpProvider::GetHelp}\label{wxhelpprovidergethelp}
|
||||||
|
|
||||||
\func{wxString}{GetHelp}{\param{const wxWindowBase* }{window}}
|
\func{wxString}{GetHelp}{\param{const wxWindowBase* }{window}}
|
||||||
@@ -57,6 +61,7 @@ This version associates the given text with all windows with this id.
|
|||||||
May be used to set the same help string for all Cancel buttons in
|
May be used to set the same help string for all Cancel buttons in
|
||||||
the application, for example.
|
the application, for example.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::RemoveHelp}\label{wxhelpproviderremovehelp}
|
\membersection{wxHelpProvider::RemoveHelp}\label{wxhelpproviderremovehelp}
|
||||||
|
|
||||||
\func{void}{RemoveHelp}{\param{wxWindowBase* }{window}}
|
\func{void}{RemoveHelp}{\param{wxWindowBase* }{window}}
|
||||||
@@ -65,6 +70,7 @@ Removes the association between the window pointer and the help text. This is
|
|||||||
called by the wxWindow destructor. Without this, the table of help strings will fill up
|
called by the wxWindow destructor. Without this, the table of help strings will fill up
|
||||||
and when window pointers are reused, the wrong help string will be found.
|
and when window pointers are reused, the wrong help string will be found.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::Set}\label{wxhelpproviderset}
|
\membersection{wxHelpProvider::Set}\label{wxhelpproviderset}
|
||||||
|
|
||||||
\func{wxHelpProvider*}{Set}{\param{wxHelpProvider* }{helpProvider}}
|
\func{wxHelpProvider*}{Set}{\param{wxHelpProvider* }{helpProvider}}
|
||||||
@@ -72,13 +78,38 @@ and when window pointers are reused, the wrong help string will be found.
|
|||||||
Get/set the current, application-wide help provider. Returns
|
Get/set the current, application-wide help provider. Returns
|
||||||
the previous one.
|
the previous one.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxHelpProvider::ShowHelpAtPoint}\label{wxhelpprovidershowhelpatpoint}
|
||||||
|
|
||||||
|
\func{bool}{ShowHelpAtPoint}{\param{wxWindowBase* }{window}, \param{const wxPoint & }{point}, \param{wxHelpEvent::Origin }{origin}}
|
||||||
|
|
||||||
|
This function may be overridden to show help for the window when it should
|
||||||
|
depend on the position inside the window, By default this method forwards to
|
||||||
|
\helpref{ShowHelp}{wxhelpprovidershowhelp}, so it is enough to only implement
|
||||||
|
the latter if the help doesn't depend on the position.
|
||||||
|
|
||||||
|
Returns \true if help was shown, or \false if no help was available for this
|
||||||
|
window.
|
||||||
|
|
||||||
|
\wxheading{Parameters}
|
||||||
|
|
||||||
|
\docparam{window}{Window to show help text for.}
|
||||||
|
|
||||||
|
\docparam{point}{Coordinates of the mouse at the moment of help event emission.}
|
||||||
|
|
||||||
|
\docparam{origin}{Help event origin, see also \helpref{wxHelpEvent::Origin}{wxhelpeventorigin}.}
|
||||||
|
|
||||||
|
\newsince{2.7.0}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxHelpProvider::ShowHelp}\label{wxhelpprovidershowhelp}
|
\membersection{wxHelpProvider::ShowHelp}\label{wxhelpprovidershowhelp}
|
||||||
|
|
||||||
\func{bool}{ShowHelp}{\param{wxWindowBase* }{window}}
|
\func{bool}{ShowHelp}{\param{wxWindowBase* }{window}}
|
||||||
|
|
||||||
Shows help for the given window. Uses \helpref{GetHelp}{wxhelpprovidergethelp} internally if
|
Shows help for the given window. Override this function if the help doesn't
|
||||||
applicable.
|
depend on the exact position inside the window, otherwise you need to override
|
||||||
|
\helpref{ShowHelpAtPoint}{wxhelpprovidershowhelpatpoint}.
|
||||||
|
|
||||||
Returns true if it was done, or false if no help was available
|
Returns \true if help was shown, or \false if no help was available for this
|
||||||
for this window.
|
window.
|
||||||
|
|
||||||
|
@@ -22,7 +22,7 @@ id to a string for passing to \helpref{wxWindow::SetHelpText}{wxwindowsethelptex
|
|||||||
|
|
||||||
\helpref{wxHelpProvider}{wxhelpprovider}, \helpref{wxSimpleHelpProvider}{wxsimplehelpprovider},
|
\helpref{wxHelpProvider}{wxhelpprovider}, \helpref{wxSimpleHelpProvider}{wxsimplehelpprovider},
|
||||||
\helpref{wxContextHelp}{wxcontexthelp}, \helpref{wxWindow::SetHelpText}{wxwindowsethelptext},
|
\helpref{wxContextHelp}{wxcontexthelp}, \helpref{wxWindow::SetHelpText}{wxwindowsethelptext},
|
||||||
\helpref{wxWindow::GetHelpText}{wxwindowgethelptext}
|
\helpref{wxWindow::GetHelpTextAtPoint}{wxwindowgethelptextatpoint}
|
||||||
|
|
||||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
@@ -16,5 +16,5 @@ control (if any) in a tooltip.
|
|||||||
|
|
||||||
\helpref{wxHelpProvider}{wxhelpprovider}, \helpref{wxHelpControllerHelpProvider}{wxhelpcontrollerhelpprovider},
|
\helpref{wxHelpProvider}{wxhelpprovider}, \helpref{wxHelpControllerHelpProvider}{wxhelpcontrollerhelpprovider},
|
||||||
\helpref{wxContextHelp}{wxcontexthelp}, \helpref{wxWindow::SetHelpText}{wxwindowsethelptext},
|
\helpref{wxContextHelp}{wxcontexthelp}, \helpref{wxWindow::SetHelpText}{wxwindowsethelptext},
|
||||||
\helpref{wxWindow::GetHelpText}{wxwindowgethelptext}
|
\helpref{wxWindow::GetHelpTextAtPoint}{wxwindowgethelptextatpoint}
|
||||||
|
|
||||||
|
@@ -1016,6 +1016,23 @@ handle, such as {\bf HWND} for Windows, {\bf Widget} for Motif, {\bf GtkWidget}
|
|||||||
\perlnote{This method will return an integer in wxPerl.}
|
\perlnote{This method will return an integer in wxPerl.}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxWindow::GetHelpTextAtPoint}\label{wxwindowgethelptextatpoint}
|
||||||
|
|
||||||
|
\constfunc{virtual wxString}{GetHelpTextAtPoint}{\param{const wxPoint &}{point}, \param{wxHelpEvent::Origin }{origin}}
|
||||||
|
|
||||||
|
Gets the help text to be used as context-sensitive help for this window. This
|
||||||
|
method should be overridden if the help message depends on the position inside
|
||||||
|
the window, otherwise \helpref{GetHelpText}{wxwindowgethelptext} can be used.
|
||||||
|
|
||||||
|
\wxheading{Parameters}
|
||||||
|
|
||||||
|
\docparam{point}{Coordinates of the mouse at the moment of help event emission.}
|
||||||
|
|
||||||
|
\docparam{origin}{Help event origin, see also \helpref{wxHelpEvent::Origin}{wxhelpeventorigin}.}
|
||||||
|
|
||||||
|
\newsince{2.7.0}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxWindow::GetHelpText}\label{wxwindowgethelptext}
|
\membersection{wxWindow::GetHelpText}\label{wxwindowgethelptext}
|
||||||
|
|
||||||
\constfunc{virtual wxString}{GetHelpText}{\void}
|
\constfunc{virtual wxString}{GetHelpText}{\void}
|
||||||
@@ -1027,7 +1044,7 @@ and not in the window object itself.
|
|||||||
|
|
||||||
\wxheading{See also}
|
\wxheading{See also}
|
||||||
|
|
||||||
\helpref{SetHelpText}{wxwindowsethelptext}, \helpref{wxHelpProvider}{wxhelpprovider}
|
\helpref{SetHelpText}{wxwindowsethelptext}, \helpref{GetHelpTextAtPoint}{wxwindowgethelptextatpoint}, \helpref{wxHelpProvider}{wxhelpprovider}
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxWindow::GetId}\label{wxwindowgetid}
|
\membersection{wxWindow::GetId}\label{wxwindowgetid}
|
||||||
|
@@ -9,8 +9,8 @@
|
|||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef _WX_CSHELPH__
|
#ifndef _WX_CSHELP_H_
|
||||||
#define _WX_CSHELPH__
|
#define _WX_CSHELP_H_
|
||||||
|
|
||||||
#include "wx/defs.h"
|
#include "wx/defs.h"
|
||||||
|
|
||||||
@@ -23,6 +23,8 @@
|
|||||||
#include "wx/bmpbuttn.h"
|
#include "wx/bmpbuttn.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "wx/event.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// classes used to implement context help UI
|
// classes used to implement context help UI
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -91,6 +93,19 @@ private:
|
|||||||
//
|
//
|
||||||
// The current help provider must be explicitly set by the application using
|
// The current help provider must be explicitly set by the application using
|
||||||
// wxHelpProvider::Set().
|
// wxHelpProvider::Set().
|
||||||
|
//
|
||||||
|
// Special note about ShowHelpAtPoint() and ShowHelp(): we want to be able to
|
||||||
|
// override ShowHelpAtPoint() when we need to use different help messages for
|
||||||
|
// different parts of the window, but it should also be possible to override
|
||||||
|
// just ShowHelp() both for backwards compatibility and just because most
|
||||||
|
// often the help does not, in fact, depend on the position and so
|
||||||
|
// implementing just ShowHelp() is simpler and more natural, so by default
|
||||||
|
// ShowHelpAtPoint() forwards to ShowHelp(). But this means that
|
||||||
|
// wxSimpleHelpProvider has to override ShowHelp() and not ShowHelpAtPoint()
|
||||||
|
// for backwards compatibility as otherwise the existing code deriving from it
|
||||||
|
// and overriding ShowHelp() but calling the base class version wouldn't work
|
||||||
|
// any more, which forces us to use a rather ugly hack and pass the extra
|
||||||
|
// parameters of ShowHelpAtPoint() to ShowHelp() via member variables.
|
||||||
class WXDLLEXPORT wxHelpProvider
|
class WXDLLEXPORT wxHelpProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -112,10 +127,23 @@ public:
|
|||||||
// the window) for this window
|
// the window) for this window
|
||||||
virtual wxString GetHelp(const wxWindowBase *window) = 0;
|
virtual wxString GetHelp(const wxWindowBase *window) = 0;
|
||||||
|
|
||||||
// do show help for the given window (uses GetHelp() internally if
|
// do show help for the given window (uses window->GetHelpAtPoint()
|
||||||
// applicable), return true if it was done or false if no help available
|
// internally if applicable), return true if it was done or false
|
||||||
// for this window
|
// if no help available for this window
|
||||||
virtual bool ShowHelp(wxWindowBase *window) = 0;
|
virtual bool ShowHelpAtPoint(wxWindowBase *window,
|
||||||
|
const wxPoint& pt,
|
||||||
|
wxHelpEvent::Origin origin)
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( window, false, _T("window must not be NULL") );
|
||||||
|
|
||||||
|
m_helptextAtPoint = pt;
|
||||||
|
m_helptextOrigin = origin;
|
||||||
|
|
||||||
|
return ShowHelp(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
// show help for the given window, see ShowHelpAtPoint() above
|
||||||
|
virtual bool ShowHelp(wxWindowBase * WXUNUSED(window)) { return false; }
|
||||||
|
|
||||||
// associate the text with the given window or id: although all help
|
// associate the text with the given window or id: although all help
|
||||||
// providers have these functions to allow making wxWindow::SetHelpText()
|
// providers have these functions to allow making wxWindow::SetHelpText()
|
||||||
@@ -133,6 +161,23 @@ public:
|
|||||||
// virtual dtor for any base class
|
// virtual dtor for any base class
|
||||||
virtual ~wxHelpProvider();
|
virtual ~wxHelpProvider();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxHelpProvider()
|
||||||
|
: m_helptextAtPoint(wxDefaultPosition),
|
||||||
|
m_helptextOrigin(wxHelpEvent::Origin_Unknown)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// helper method used by ShowHelp(): returns the help string to use by
|
||||||
|
// using m_helptextAtPoint/m_helptextOrigin if they're set or just GetHelp
|
||||||
|
// otherwise
|
||||||
|
wxString GetHelpTextMaybeAtPoint(wxWindowBase *window);
|
||||||
|
|
||||||
|
|
||||||
|
// parameters of the last ShowHelpAtPoint() call, used by ShowHelp()
|
||||||
|
wxPoint m_helptextAtPoint;
|
||||||
|
wxHelpEvent::Origin m_helptextOrigin;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static wxHelpProvider *ms_helpProvider;
|
static wxHelpProvider *ms_helpProvider;
|
||||||
};
|
};
|
||||||
@@ -148,7 +193,10 @@ class WXDLLEXPORT wxSimpleHelpProvider : public wxHelpProvider
|
|||||||
public:
|
public:
|
||||||
// implement wxHelpProvider methods
|
// implement wxHelpProvider methods
|
||||||
virtual wxString GetHelp(const wxWindowBase *window);
|
virtual wxString GetHelp(const wxWindowBase *window);
|
||||||
|
|
||||||
|
// override ShowHelp() and not ShowHelpAtPoint() as explained above
|
||||||
virtual bool ShowHelp(wxWindowBase *window);
|
virtual bool ShowHelp(wxWindowBase *window);
|
||||||
|
|
||||||
virtual void AddHelp(wxWindowBase *window, const wxString& text);
|
virtual void AddHelp(wxWindowBase *window, const wxString& text);
|
||||||
virtual void AddHelp(wxWindowID id, const wxString& text);
|
virtual void AddHelp(wxWindowID id, const wxString& text);
|
||||||
virtual void RemoveHelp(wxWindowBase* window);
|
virtual void RemoveHelp(wxWindowBase* window);
|
||||||
@@ -172,6 +220,9 @@ public:
|
|||||||
wxHelpControllerHelpProvider(wxHelpControllerBase* hc = (wxHelpControllerBase*) NULL);
|
wxHelpControllerHelpProvider(wxHelpControllerBase* hc = (wxHelpControllerBase*) NULL);
|
||||||
|
|
||||||
// implement wxHelpProvider methods
|
// implement wxHelpProvider methods
|
||||||
|
|
||||||
|
// again (see above): this should be ShowHelpAtPoint() but we need to
|
||||||
|
// override ShowHelp() to avoid breaking existing code
|
||||||
virtual bool ShowHelp(wxWindowBase *window);
|
virtual bool ShowHelp(wxWindowBase *window);
|
||||||
|
|
||||||
// Other accessors
|
// Other accessors
|
||||||
@@ -189,5 +240,5 @@ WXDLLEXPORT wxString wxContextId(int id);
|
|||||||
|
|
||||||
#endif // wxUSE_HELP
|
#endif // wxUSE_HELP
|
||||||
|
|
||||||
#endif // _WX_CSHELPH__
|
#endif // _WX_CSHELP_H_
|
||||||
|
|
||||||
|
@@ -927,9 +927,19 @@ public:
|
|||||||
// associate this help text with all windows with the same id as this
|
// associate this help text with all windows with the same id as this
|
||||||
// one
|
// one
|
||||||
void SetHelpTextForId(const wxString& text);
|
void SetHelpTextForId(const wxString& text);
|
||||||
// get the help string associated with this window (may be empty)
|
// get the help string associated with the given position in this window
|
||||||
wxString GetHelpText() const;
|
//
|
||||||
#else
|
// notice that pt may be invalid if event origin is keyboard or unknown
|
||||||
|
// and this method should return the global window help text then
|
||||||
|
virtual wxString GetHelpTextAtPoint(const wxPoint& pt,
|
||||||
|
wxHelpEvent::Origin origin) const;
|
||||||
|
// returns the position-independent help text
|
||||||
|
wxString GetHelpText() const
|
||||||
|
{
|
||||||
|
return GetHelpTextAtPoint(wxDefaultPosition, wxHelpEvent::Origin_Unknown);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else // !wxUSE_HELP
|
||||||
// silently ignore SetHelpText() calls
|
// silently ignore SetHelpText() calls
|
||||||
void SetHelpText(const wxString& WXUNUSED(text)) { }
|
void SetHelpText(const wxString& WXUNUSED(text)) { }
|
||||||
void SetHelpTextForId(const wxString& WXUNUSED(text)) { }
|
void SetHelpTextForId(const wxString& WXUNUSED(text)) { }
|
||||||
|
@@ -327,6 +327,25 @@ wxHelpProvider::~wxHelpProvider()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString wxHelpProvider::GetHelpTextMaybeAtPoint(wxWindowBase *window)
|
||||||
|
{
|
||||||
|
if ( m_helptextAtPoint != wxDefaultPosition ||
|
||||||
|
m_helptextOrigin != wxHelpEvent::Origin_Unknown )
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( window, wxEmptyString, _T("window must not be NULL") );
|
||||||
|
|
||||||
|
wxPoint pt = m_helptextAtPoint;
|
||||||
|
wxHelpEvent::Origin origin = m_helptextOrigin;
|
||||||
|
|
||||||
|
m_helptextAtPoint = wxDefaultPosition;
|
||||||
|
m_helptextOrigin = wxHelpEvent::Origin_Unknown;
|
||||||
|
|
||||||
|
return window->GetHelpTextAtPoint(pt, origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetHelp(window);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxSimpleHelpProvider
|
// wxSimpleHelpProvider
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -380,10 +399,11 @@ bool wxSimpleHelpProvider::ShowHelp(wxWindowBase *window)
|
|||||||
}
|
}
|
||||||
s_tipWindow = NULL;
|
s_tipWindow = NULL;
|
||||||
|
|
||||||
wxString text = GetHelp(window);
|
const wxString text = GetHelpTextMaybeAtPoint(window);
|
||||||
if ( !text.empty() )
|
if ( !text.empty() )
|
||||||
{
|
{
|
||||||
s_tipWindow = new wxTipWindow((wxWindow *)window, text, 100, & s_tipWindow);
|
s_tipWindow = new wxTipWindow((wxWindow *)window, text,
|
||||||
|
100, &s_tipWindow);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -405,29 +425,26 @@ wxHelpControllerHelpProvider::wxHelpControllerHelpProvider(wxHelpControllerBase*
|
|||||||
|
|
||||||
bool wxHelpControllerHelpProvider::ShowHelp(wxWindowBase *window)
|
bool wxHelpControllerHelpProvider::ShowHelp(wxWindowBase *window)
|
||||||
{
|
{
|
||||||
wxString text = GetHelp(window);
|
const wxString text = GetHelpTextMaybeAtPoint(window);
|
||||||
if ( !text.empty() )
|
|
||||||
{
|
if ( text.empty() )
|
||||||
|
return false;
|
||||||
|
|
||||||
if ( m_helpController )
|
if ( m_helpController )
|
||||||
{
|
{
|
||||||
if (text.IsNumber())
|
// if it's a numeric topic, show it
|
||||||
return m_helpController->DisplayContextPopup(wxAtoi(text));
|
long topic;
|
||||||
|
if ( text.ToLong(&topic) )
|
||||||
|
return m_helpController->DisplayContextPopup(topic);
|
||||||
|
|
||||||
// If the help controller is capable of popping up the text...
|
// otherwise show the text directly
|
||||||
else if (m_helpController->DisplayTextPopup(text, wxGetMousePosition()))
|
if ( m_helpController->DisplayTextPopup(text, wxGetMousePosition()) )
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
// ...else use the default method.
|
|
||||||
return wxSimpleHelpProvider::ShowHelp(window);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return wxSimpleHelpProvider::ShowHelp(window);
|
|
||||||
|
|
||||||
}
|
// if there is no help controller or it's not capable of showing the help,
|
||||||
|
// fallback to the default method
|
||||||
return false;
|
return wxSimpleHelpProvider::ShowHelp(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convenience function for turning context id into wxString
|
// Convenience function for turning context id into wxString
|
||||||
|
@@ -1469,7 +1469,10 @@ void wxWindowBase::SetHelpTextForId(const wxString& text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get the help string associated with this window (may be empty)
|
// get the help string associated with this window (may be empty)
|
||||||
wxString wxWindowBase::GetHelpText() const
|
// default implementation forwards calls to the help provider
|
||||||
|
wxString
|
||||||
|
wxWindowBase::GetHelpTextAtPoint(const wxPoint & WXUNUSED(pt),
|
||||||
|
wxHelpEvent::Origin WXUNUSED(origin)) const
|
||||||
{
|
{
|
||||||
wxString text;
|
wxString text;
|
||||||
wxHelpProvider *helpProvider = wxHelpProvider::Get();
|
wxHelpProvider *helpProvider = wxHelpProvider::Get();
|
||||||
@@ -1487,7 +1490,7 @@ void wxWindowBase::OnHelp(wxHelpEvent& event)
|
|||||||
wxHelpProvider *helpProvider = wxHelpProvider::Get();
|
wxHelpProvider *helpProvider = wxHelpProvider::Get();
|
||||||
if ( helpProvider )
|
if ( helpProvider )
|
||||||
{
|
{
|
||||||
if ( helpProvider->ShowHelp(this) )
|
if ( helpProvider->ShowHelpAtPoint(this, event.GetPosition(), event.GetOrigin()) )
|
||||||
{
|
{
|
||||||
// skip the event.Skip() below
|
// skip the event.Skip() below
|
||||||
return;
|
return;
|
||||||
@@ -2801,7 +2804,7 @@ wxAccStatus wxWindowAccessible::GetDescription(int WXUNUSED(childId), wxString*
|
|||||||
if (!GetWindow())
|
if (!GetWindow())
|
||||||
return wxACC_FAIL;
|
return wxACC_FAIL;
|
||||||
|
|
||||||
wxString ht(GetWindow()->GetHelpText());
|
wxString ht(GetWindow()->GetHelpTextAtPoint(wxDefaultPosition, wxHelpEvent::Origin_Keyboard));
|
||||||
if (!ht.empty())
|
if (!ht.empty())
|
||||||
{
|
{
|
||||||
*description = ht;
|
*description = ht;
|
||||||
@@ -2817,7 +2820,7 @@ wxAccStatus wxWindowAccessible::GetHelpText(int WXUNUSED(childId), wxString* hel
|
|||||||
if (!GetWindow())
|
if (!GetWindow())
|
||||||
return wxACC_FAIL;
|
return wxACC_FAIL;
|
||||||
|
|
||||||
wxString ht(GetWindow()->GetHelpText());
|
wxString ht(GetWindow()->GetHelpTextAtPoint(wxDefaultPosition, wxHelpEvent::Origin_Keyboard));
|
||||||
if (!ht.empty())
|
if (!ht.empty())
|
||||||
{
|
{
|
||||||
*helpText = ht;
|
*helpText = ht;
|
||||||
|
Reference in New Issue
Block a user