]> git.saurik.com Git - wxWidgets.git/commitdiff
Add "rect" paramerer to wxRichToolTip::ShowFor().
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 28 Nov 2012 14:18:17 +0000 (14:18 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 28 Nov 2012 14:18:17 +0000 (14:18 +0000)
Allow to show the tooltip at the exact specified position instead of placing
it automatically.

Closes #14862.

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

docs/changes.txt
include/wx/generic/private/richtooltip.h
include/wx/private/richtooltip.h
include/wx/richtooltip.h
interface/wx/richtooltip.h
src/common/richtooltipcmn.cpp
src/generic/richtooltipg.cpp
src/msw/richtooltip.cpp

index f3b0434f2a857ea4fd85832251bac741ee272b33..48bf721253f1ab7a4491a87f1a7c53c289f8a2ef 100644 (file)
@@ -594,6 +594,7 @@ All (GUI):
 - Optionally allow showing tooltips for disabled ribbon buttons (wxBen).
 - Add wxTL_NO_HEADER style to wxTreeListCtrl (robboto).
 - Add possibility to delay showing wxRichToolTip (John Roberts).
+- Add "rect" paramerer to wxRichToolTip::ShowFor() (John Roberts).
 
 wxGTK:
 
index 8cd1b0e0dd462e9e09138f508243cf853c2c6e09..c296b0c5efadaf31202264d9a3904e52fc25e161 100644 (file)
@@ -42,7 +42,7 @@ public:
     virtual void SetTipKind(wxTipKind tipKind);
     virtual void SetTitleFont(const wxFont& font);
 
-    virtual void ShowFor(wxWindow* win);
+    virtual void ShowFor(wxWindow* win, wxRect* rect = NULL);
 
 protected:
     wxString m_title,
index ad655c7d150736df02036adbd25e39c1eb511c07..c55b6d8dd4c0a5921a99e80b1d5b78fdedeb084b 100644 (file)
@@ -34,7 +34,7 @@ public:
     virtual void SetTipKind(wxTipKind tipKind) = 0;
     virtual void SetTitleFont(const wxFont& font) = 0;
 
-    virtual void ShowFor(wxWindow* win) = 0;
+    virtual void ShowFor(wxWindow* win, wxRect* rect = NULL) = 0;
 
     virtual ~wxRichToolTipImpl() { }
 
index c642b04c2b43734208933c2a33d9b919cd6d19da..4052a5d00c568e0d71a06dec42b1786dc92cfed8 100644 (file)
@@ -87,8 +87,8 @@ public:
     // or colour appropriate for the current platform.
     void SetTitleFont(const wxFont& font);
 
-    // Show the tooltip for the given window.
-    void ShowFor(wxWindow* win);
+    // Show the tooltip for the given window and optionally a specified area.
+    void ShowFor(wxWindow* win, wxRect* rect = NULL);
 
     // Non-virtual dtor as this class is not supposed to be derived from.
     ~wxRichToolTip();
index 6e0a01441135d43ab783f18c39603b47c343e2af..6c4615d442d13a3ab0458274b16b208b241fa518 100644 (file)
@@ -175,15 +175,20 @@ public:
     void SetTitleFont(const wxFont& font);
 
     /**
-        Show the tooltip for the given window.
+        Show the tooltip for the given window and optionally specify where to
+        show the tooltip.
 
-        The tooltip tip points to the (middle of the) specified window which
-        must be non-@NULL.
+        By default the tooltip tip points to the (middle of the) specified
+        window which must be non-@NULL or, if @a rect is non-@NULL, the middle
+        of the specified wxRect.
 
         Currently the native MSW implementation is used only if @a win is a
-        wxTextCtrl. This limitation may be removed in the future.
+        wxTextCtrl and @a rect is @NULL. This limitation may be removed in the
+        future.
+
+        Parameter @a rect is new since wxWidgets 2.9.5.
      */
-    void ShowFor(wxWindow* win);
+    void ShowFor(wxWindow* win, wxRect* rect = NULL);
 
     /**
         Destructor.
index b319bd29fe19fa4f022f8557fec7ab2a5d39ecc5..c4671f63f171fd14b28dfe554320dda7d8d06c15 100644 (file)
@@ -73,11 +73,11 @@ void wxRichToolTip::SetTitleFont(const wxFont& font)
     m_impl->SetTitleFont(font);
 }
 
-void wxRichToolTip::ShowFor(wxWindow* win)
+void wxRichToolTip::ShowFor(wxWindow* win, wxRect* rect = NULL);
 {
     wxCHECK_RET( win, wxS("Must have a valid window") );
 
-    m_impl->ShowFor(win);
+    m_impl->ShowFor(win, rect);
 }
 
 wxRichToolTip::~wxRichToolTip()
index b37410fd577b4977d2259a5806b0aae683bb5c87..282f27e7a94de3a973254db3eed7bcdd8f2f2161 100644 (file)
@@ -232,9 +232,14 @@ public:
         }
     }
 
-    void SetPosition()
+    void SetPosition(wxRect* rect)
     {
-        wxPoint pos = GetTipPoint();
+        wxPoint pos;
+
+        if ( !rect || rect->IsEmpty() )
+            pos = GetTipPoint();
+        else
+            pos = wxPoint( rect->x + rect->width / 2, rect->y + rect->height / 2 );
 
         // We want our anchor point to coincide with this position so offset
         // the position of the top left corner passed to Move() accordingly.
@@ -668,7 +673,7 @@ void wxRichToolTipGenericImpl::SetTitleFont(const wxFont& font)
     m_titleFont = font;
 }
 
-void wxRichToolTipGenericImpl::ShowFor(wxWindow* win)
+void wxRichToolTipGenericImpl::ShowFor(wxWindow* win, wxRect* rect = NULL);
 {
     // Set the focus to the window the tooltip refers to to make it look active.
     win->SetFocus();
@@ -685,7 +690,7 @@ void wxRichToolTipGenericImpl::ShowFor(wxWindow* win)
 
     popup->SetBackgroundColours(m_colStart, m_colEnd);
 
-    popup->SetPosition();
+    popup->SetPosition(rect);
     // show or start the timer to delay showing the popup
     popup->SetTimeoutAndShow( m_timeout, m_delay );
 }
index 3cc679abffc5792b202808c97158b96ae414ef21..4fd5c0206b527998f3edab0cb0788a88cf9a81f3 100644 (file)
@@ -151,13 +151,13 @@ public:
         wxRichToolTipGenericImpl::SetTitleFont(font);
     }
 
-    virtual void ShowFor(wxWindow* win)
+    virtual void ShowFor(wxWindow* win, wxRect* rect = NULL);
     {
         // TODO: We could use native tooltip control to show native balloon
         //       tooltips for any window but right now we use the simple
         //       EM_SHOWBALLOONTIP API which can only be used with text
         //       controls.
-        if ( m_canUseNative )
+        if ( m_canUseNative && !rect )
         {
             wxTextCtrl* const text = wxDynamicCast(win, wxTextCtrl);
             if ( text )
@@ -175,7 +175,7 @@ public:
         // Don't set m_canUseNative to false here, we could be able to use the
         // native tooltips if we're called for a different window the next
         // time.
-        wxRichToolTipGenericImpl::ShowFor(win);
+        wxRichToolTipGenericImpl::ShowFor(win, rect);
     }
 
 private: