X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/975c496df1d04042b6cb27355911704aeea28cc3..ad653fa23069c5d9378247084f03c9a718c3ad62:/src/ribbon/buttonbar.cpp diff --git a/src/ribbon/buttonbar.cpp b/src/ribbon/buttonbar.cpp index 7e25278de3..83c009b946 100644 --- a/src/ribbon/buttonbar.cpp +++ b/src/ribbon/buttonbar.cpp @@ -29,8 +29,8 @@ #include "wx/msw/private.h" #endif -wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEvent); -wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBUTTON_DROPDOWN_CLICKED, wxRibbonButtonBarEvent); +wxDEFINE_EVENT(wxEVT_RIBBONBUTTONBAR_CLICKED, wxRibbonButtonBarEvent); +wxDEFINE_EVENT(wxEVT_RIBBONBUTTONBAR_DROPDOWN_CLICKED, wxRibbonButtonBarEvent); IMPLEMENT_DYNAMIC_CLASS(wxRibbonButtonBarEvent, wxCommandEvent) IMPLEMENT_CLASS(wxRibbonButtonBar, wxRibbonControl) @@ -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; @@ -934,7 +945,7 @@ bool wxRibbonButtonBar::TryCollapseLayout(wxRibbonButtonBarLayout* original, // 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; } @@ -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); } @@ -1121,9 +1139,9 @@ void wxRibbonButtonBar::OnMouseUp(wxMouseEvent& evt) do { if(size.normal_region.Contains(cursor)) - event_type = wxEVT_COMMAND_RIBBONBUTTON_CLICKED; + event_type = wxEVT_RIBBONBUTTONBAR_CLICKED; else if(size.dropdown_region.Contains(cursor)) - event_type = wxEVT_COMMAND_RIBBONBUTTON_DROPDOWN_CLICKED; + event_type = wxEVT_RIBBONBUTTONBAR_DROPDOWN_CLICKED; else break; wxRibbonButtonBarEvent notification(event_type, id);