X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/975c496df1d04042b6cb27355911704aeea28cc3..591805e0b85d26b6256617710277b26065a2b767:/src/ribbon/buttonbar.cpp diff --git a/src/ribbon/buttonbar.cpp b/src/ribbon/buttonbar.cpp index 7e25278de3..39e4c4f247 100644 --- a/src/ribbon/buttonbar.cpp +++ b/src/ribbon/buttonbar.cpp @@ -4,7 +4,6 @@ // Author: Peter Cawley // Modified by: // Created: 2009-07-01 -// RCS-ID: $Id$ // Copyright: (C) Peter Cawley // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -29,8 +28,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 +799,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 +944,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 +989,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 +1006,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 +1022,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 +1051,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 +1138,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);