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:
Vadim Zeitlin
2012-11-14 00:16:16 +00:00
parent 4d8209b907
commit 40df8a51f2
4 changed files with 47 additions and 4 deletions

View 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);
}