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;
// If height isn't preserved (i.e. it is reduced), then the minimum
// size for the button bar will decrease, preventing the original
// layout from being used (in some cases).
- // It may be a good idea to always preverse the height, but for now
+ // It may be a good idea to always preserve the height, but for now
// it is only done when the first button is involved in a collapse.
preserve_height = true;
}
{
wxPoint cursor(evt.GetPosition());
wxRibbonButtonBarButtonInstance* new_hovered = NULL;
+ wxRibbonButtonBarButtonInstance* tooltipButton = NULL;
long new_hovered_state = 0;
wxRibbonButtonBarLayout* layout = m_layouts.Item(m_current_layout);
btn_rect.SetSize(size.size);
if(btn_rect.Contains(cursor))
{
- new_hovered = &instance;
- new_hovered_state = instance.base->state;
- new_hovered_state &= ~wxRIBBON_BUTTONBAR_BUTTON_HOVER_MASK;
- wxPoint offset(cursor);
- offset -= btn_rect.GetTopLeft();
- if(size.normal_region.Contains(offset))
+ if((instance.base->state & wxRIBBON_BUTTONBAR_BUTTON_DISABLED) == 0)
{
- new_hovered_state |= wxRIBBON_BUTTONBAR_BUTTON_NORMAL_HOVERED;
+ tooltipButton = &instance;
+ new_hovered = &instance;
+ new_hovered_state = instance.base->state;
+ new_hovered_state &= ~wxRIBBON_BUTTONBAR_BUTTON_HOVER_MASK;
+ wxPoint offset(cursor);
+ offset -= btn_rect.GetTopLeft();
+ if(size.normal_region.Contains(offset))
+ {
+ new_hovered_state |= wxRIBBON_BUTTONBAR_BUTTON_NORMAL_HOVERED;
+ }
+ if(size.dropdown_region.Contains(offset))
+ {
+ new_hovered_state |= wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_HOVERED;
+ }
+ break;
}
- if(size.dropdown_region.Contains(offset))
+ else if (m_show_tooltips_for_disabled)
{
- new_hovered_state |= wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_HOVERED;
+ tooltipButton = &instance;
}
- break;
}
}
#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 &&
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);
}
btn_rect.SetSize(size.size);
if(btn_rect.Contains(cursor))
{
- m_active_button = &instance;
- cursor -= btn_rect.GetTopLeft();
- long state = 0;
- if(size.normal_region.Contains(cursor))
- state = wxRIBBON_BUTTONBAR_BUTTON_NORMAL_ACTIVE;
- else if(size.dropdown_region.Contains(cursor))
- state = wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_ACTIVE;
- instance.base->state |= state;
- Refresh(false);
- break;
+ if((instance.base->state & wxRIBBON_BUTTONBAR_BUTTON_DISABLED) == 0)
+ {
+ m_active_button = &instance;
+ cursor -= btn_rect.GetTopLeft();
+ long state = 0;
+ if(size.normal_region.Contains(cursor))
+ state = wxRIBBON_BUTTONBAR_BUTTON_NORMAL_ACTIVE;
+ else if(size.dropdown_region.Contains(cursor))
+ state = wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_ACTIVE;
+ instance.base->state |= state;
+ Refresh(false);
+ break;
+ }
}
}
}
wxRibbonButtonBarButtonBase *wxRibbonButtonBar::GetItem(size_t n) const
{
- wxCHECK_MSG(n >= 0 && n < m_buttons.GetCount(), NULL, "wxRibbonButtonBar item's index is out of bound");
+ wxCHECK_MSG(n < m_buttons.GetCount(), NULL, "wxRibbonButtonBar item's index is out of bound");
return m_buttons.Item(n);
}