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 wxDirCtrl::GetPath() (troelsk).
|
||||||
- Added wxEVT_COMMAND_DIRCTRL_CHANGED event (troelsk).
|
- Added wxEVT_COMMAND_DIRCTRL_CHANGED event (troelsk).
|
||||||
- Added wxControl::GetSizeFromTextSize() (Manuel Martin).
|
- Added wxControl::GetSizeFromTextSize() (Manuel Martin).
|
||||||
|
- Optionally allow showing tooltips for disabled ribbon buttons (wxBen).
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -147,6 +147,10 @@ public:
|
|||||||
virtual bool IsSizingContinuous() const;
|
virtual bool IsSizingContinuous() const;
|
||||||
|
|
||||||
virtual wxSize GetMinSize() const;
|
virtual wxSize GetMinSize() const;
|
||||||
|
|
||||||
|
void SetShowToolTipsForDisabled(bool show);
|
||||||
|
bool GetShowToolTipsForDisabled() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class wxRibbonButtonBarEvent;
|
friend class wxRibbonButtonBarEvent;
|
||||||
virtual wxSize DoGetBestSize() const;
|
virtual wxSize DoGetBestSize() const;
|
||||||
@@ -186,6 +190,7 @@ protected:
|
|||||||
int m_current_layout;
|
int m_current_layout;
|
||||||
bool m_layouts_valid;
|
bool m_layouts_valid;
|
||||||
bool m_lock_active_state;
|
bool m_lock_active_state;
|
||||||
|
bool m_show_tooltips_for_disabled;
|
||||||
|
|
||||||
#ifndef SWIG
|
#ifndef SWIG
|
||||||
DECLARE_CLASS(wxRibbonButtonBar)
|
DECLARE_CLASS(wxRibbonButtonBar)
|
||||||
|
@@ -485,6 +485,25 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual wxRibbonButtonBarButtonBase *GetHoveredItem() const;
|
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_hovered_button = NULL;
|
||||||
m_active_button = NULL;
|
m_active_button = NULL;
|
||||||
m_lock_active_state = false;
|
m_lock_active_state = false;
|
||||||
|
m_show_tooltips_for_disabled = false;
|
||||||
|
|
||||||
SetBackgroundStyle(wxBG_STYLE_CUSTOM);
|
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
|
wxSize wxRibbonButtonBar::GetMinSize() const
|
||||||
{
|
{
|
||||||
return m_layouts.Last()->overall_size;
|
return m_layouts.Last()->overall_size;
|
||||||
@@ -979,6 +990,7 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
|
|||||||
{
|
{
|
||||||
wxPoint cursor(evt.GetPosition());
|
wxPoint cursor(evt.GetPosition());
|
||||||
wxRibbonButtonBarButtonInstance* new_hovered = NULL;
|
wxRibbonButtonBarButtonInstance* new_hovered = NULL;
|
||||||
|
wxRibbonButtonBarButtonInstance* tooltipButton = NULL;
|
||||||
long new_hovered_state = 0;
|
long new_hovered_state = 0;
|
||||||
|
|
||||||
wxRibbonButtonBarLayout* layout = m_layouts.Item(m_current_layout);
|
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)
|
if((instance.base->state & wxRIBBON_BUTTONBAR_BUTTON_DISABLED) == 0)
|
||||||
{
|
{
|
||||||
|
tooltipButton = &instance;
|
||||||
new_hovered = &instance;
|
new_hovered = &instance;
|
||||||
new_hovered_state = instance.base->state;
|
new_hovered_state = instance.base->state;
|
||||||
new_hovered_state &= ~wxRIBBON_BUTTONBAR_BUTTON_HOVER_MASK;
|
new_hovered_state &= ~wxRIBBON_BUTTONBAR_BUTTON_HOVER_MASK;
|
||||||
@@ -1010,14 +1023,22 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (m_show_tooltips_for_disabled)
|
||||||
|
{
|
||||||
|
tooltipButton = &instance;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
if(new_hovered == NULL && GetToolTip())
|
if(tooltipButton == NULL && GetToolTip())
|
||||||
{
|
{
|
||||||
UnsetToolTip();
|
UnsetToolTip();
|
||||||
}
|
}
|
||||||
|
if(tooltipButton)
|
||||||
|
{
|
||||||
|
SetToolTip(tooltipButton->base->help_string);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(new_hovered != m_hovered_button || (m_hovered_button != NULL &&
|
if(new_hovered != m_hovered_button || (m_hovered_button != NULL &&
|
||||||
@@ -1031,9 +1052,6 @@ void wxRibbonButtonBar::OnMouseMove(wxMouseEvent& evt)
|
|||||||
if(m_hovered_button != NULL)
|
if(m_hovered_button != NULL)
|
||||||
{
|
{
|
||||||
m_hovered_button->base->state = new_hovered_state;
|
m_hovered_button->base->state = new_hovered_state;
|
||||||
#if wxUSE_TOOLTIPS
|
|
||||||
SetToolTip(m_hovered_button->base->help_string);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
Refresh(false);
|
Refresh(false);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user