]> git.saurik.com Git - wxWidgets.git/commitdiff
Optionally allow showing tooltips for disabled ribbon buttons.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 14 Nov 2012 00:16:16 +0000 (00:16 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 14 Nov 2012 00:16:16 +0000 (00:16 +0000)
Add wxRibbonButtonBar::SetShowToolTipsForDisabled() to allow enabling the
tooltips even for the disabled buttons.

Closes #14820.

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

docs/changes.txt
include/wx/ribbon/buttonbar.h
interface/wx/ribbon/buttonbar.h
src/ribbon/buttonbar.cpp

index c8e1d6d10c2163da59583fe795456ebc659d7086..b3d18eac61e2820a3a963a2e881ff2f3884a6eac 100644 (file)
@@ -583,6 +583,7 @@ All (GUI):
 - Added wxDirCtrl::GetPath() (troelsk).
 - Added wxEVT_COMMAND_DIRCTRL_CHANGED event (troelsk).
 - Added wxControl::GetSizeFromTextSize() (Manuel Martin).
+- Optionally allow showing tooltips for disabled ribbon buttons (wxBen).
 
 wxGTK:
 
index 6dd002b0c205312e2794da7960eb0d113559500c..38957d7c5c5bcf36a54e046cbbb888c4fcb3cfd9 100644 (file)
@@ -147,6 +147,10 @@ public:
     virtual bool IsSizingContinuous() const;
 
     virtual wxSize GetMinSize() const;
+
+    void SetShowToolTipsForDisabled(bool show);
+    bool GetShowToolTipsForDisabled() const;
+
 protected:
     friend class wxRibbonButtonBarEvent;
     virtual wxSize DoGetBestSize() const;
@@ -186,6 +190,7 @@ protected:
     int m_current_layout;
     bool m_layouts_valid;
     bool m_lock_active_state;
+    bool m_show_tooltips_for_disabled;
 
 #ifndef SWIG
     DECLARE_CLASS(wxRibbonButtonBar)
index 08951900f2261403385ebe81a6e25dffbf452ca1..8bc04b0893392c7b767cfcf3a5d5148ab4c8b9ad 100644 (file)
@@ -485,6 +485,25 @@ public:
     */
     virtual wxRibbonButtonBarButtonBase *GetHoveredItem() const;
 
+    /**
+        Indicates whether tooltips are shown for disabled buttons.
+
+        By default they are not shown.
+
+        @since 2.9.5
+    */
+    void SetShowToolTipsForDisabled(bool show);
+
+    /**
+        Sets whether tooltips should be shown for disabled buttons or not.
+
+        You may wish to show it to explain why a button is disabled or
+        what it normally does when enabled.
+
+        @since 2.9.5
+    */
+    bool GetShowToolTipsForDisabled() const;
+
 };
 
 /**
index 7e25278de3b17b4457bd16be8212c6b70eb020e4..5dcb021491078cbbac8c3a121dc28bafcc95228d 100644 (file)
@@ -800,10 +800,21 @@ void wxRibbonButtonBar::CommonInit(long WXUNUSED(style))
     m_hovered_button = NULL;
     m_active_button = NULL;
     m_lock_active_state = false;
+    m_show_tooltips_for_disabled = false;
 
     SetBackgroundStyle(wxBG_STYLE_CUSTOM);
 }
 
+void wxRibbonButtonBar::SetShowToolTipsForDisabled(bool show)
+{
+    m_show_tooltips_for_disabled = show;
+}
+
+bool wxRibbonButtonBar::GetShowToolTipsForDisabled() const
+{
+    return m_show_tooltips_for_disabled;
+}
+
 wxSize wxRibbonButtonBar::GetMinSize() const
 {
     return m_layouts.Last()->overall_size;
@@ -979,6 +990,7 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
 {
     wxPoint cursor(evt.GetPosition());
     wxRibbonButtonBarButtonInstance* new_hovered = NULL;
+    wxRibbonButtonBarButtonInstance* tooltipButton = NULL;
     long new_hovered_state = 0;
 
     wxRibbonButtonBarLayout* layout = m_layouts.Item(m_current_layout);
@@ -995,6 +1007,7 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
         {
             if((instance.base->state & wxRIBBON_BUTTONBAR_BUTTON_DISABLED) == 0)
             {
+                tooltipButton = &instance;
                 new_hovered = &instance;
                 new_hovered_state = instance.base->state;
                 new_hovered_state &= ~wxRIBBON_BUTTONBAR_BUTTON_HOVER_MASK;
@@ -1010,14 +1023,22 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
                 }
                 break;
             }
+            else if (m_show_tooltips_for_disabled)
+            {
+                tooltipButton = &instance;
+            }
         }
     }
 
 #if wxUSE_TOOLTIPS
-    if(new_hovered == NULL && GetToolTip())
+    if(tooltipButton == NULL && GetToolTip())
     {
         UnsetToolTip();
     }
+    if(tooltipButton)
+    {
+        SetToolTip(tooltipButton->base->help_string);
+    }
 #endif
 
     if(new_hovered != m_hovered_button || (m_hovered_button != NULL &&
@@ -1031,9 +1052,6 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
         if(m_hovered_button != NULL)
         {
             m_hovered_button->base->state = new_hovered_state;
-#if wxUSE_TOOLTIPS
-            SetToolTip(m_hovered_button->base->help_string);
-#endif
         }
         Refresh(false);
     }