Optionally allow showing tooltips for disabled ribbon buttons.
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
This commit is contained in:
@@ -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:
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user