X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c3ead1d1513a5eb79091a604f4e42b45d1bdf5d..cc3977bf132d40cb66c6b488890ef67a396d4a0a:/src/ribbon/bar.cpp diff --git a/src/ribbon/bar.cpp b/src/ribbon/bar.cpp index 3aa3477002..9e5c6435dc 100644 --- a/src/ribbon/bar.cpp +++ b/src/ribbon/bar.cpp @@ -15,10 +15,9 @@ #pragma hdrstop #endif -#include "wx/ribbon/bar.h" - #if wxUSE_RIBBON +#include "wx/ribbon/bar.h" #include "wx/ribbon/art.h" #include "wx/dcbuffer.h" @@ -31,7 +30,7 @@ #include "wx/arrimpl.cpp" -WX_DEFINE_USER_EXPORTED_OBJARRAY(wxRibbonPageTabInfoArray); +WX_DEFINE_USER_EXPORTED_OBJARRAY(wxRibbonPageTabInfoArray) wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGED, wxRibbonBarEvent); wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGING, wxRibbonBarEvent); @@ -39,6 +38,7 @@ wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_TAB_MIDDLE_DOWN, wxRibbonBarEvent); wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_TAB_MIDDLE_UP, wxRibbonBarEvent); wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_DOWN, wxRibbonBarEvent); wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP, wxRibbonBarEvent); +wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK, wxRibbonBarEvent); IMPLEMENT_CLASS(wxRibbonBar, wxRibbonControl) IMPLEMENT_DYNAMIC_CLASS(wxRibbonBarEvent, wxNotifyEvent) @@ -54,6 +54,7 @@ BEGIN_EVENT_TABLE(wxRibbonBar, wxRibbonControl) EVT_PAINT(wxRibbonBar::OnPaint) EVT_RIGHT_DOWN(wxRibbonBar::OnMouseRightDown) EVT_RIGHT_UP(wxRibbonBar::OnMouseRightUp) + EVT_LEFT_DCLICK(wxRibbonBar::OnMouseDoubleClick) EVT_SIZE(wxRibbonBar::OnSize) END_EVENT_TABLE() @@ -66,7 +67,7 @@ void wxRibbonBar::AddPage(wxRibbonPage *page) info.hovered = false; // info.rect not set (intentional) - wxMemoryDC dcTemp; + wxClientDC dcTemp(this); wxString label = wxEmptyString; if(m_flags & wxRIBBON_BAR_SHOW_PAGE_LABELS) label = page->GetLabel(); @@ -124,7 +125,7 @@ bool wxRibbonBar::Realize() { bool status = true; - wxMemoryDC dcTemp; + wxClientDC dcTemp(this); int sep = m_art->GetMetric(wxRIBBON_ART_TAB_SEPARATION_SIZE); size_t numtabs = m_pages.GetCount(); size_t i; @@ -210,9 +211,9 @@ void wxRibbonBar::OnMouseMove(wxMouseEvent& evt) if(m_tab_scroll_buttons_shown) { #define SET_FLAG(variable, flag) \ - { if(((variable) & (flag)) != (flag)) variable |= (flag), refresh_tabs = true; } + { if(((variable) & (flag)) != (flag)) { variable |= (flag); refresh_tabs = true; }} #define UNSET_FLAG(variable, flag) \ - { if((variable) & (flag)) variable &= ~(flag), refresh_tabs = true; } + { if((variable) & (flag)) { variable &= ~(flag); refresh_tabs = true; }} if(m_tab_scroll_left_button_rect.Contains(x, y)) SET_FLAG(m_tab_scroll_left_button_state, wxRIBBON_SCROLL_BTN_HOVERED) @@ -377,7 +378,7 @@ void wxRibbonBar::RecalculateTabSizes() m_tab_scroll_buttons_shown = true; } { - wxMemoryDC temp_dc; + wxClientDC temp_dc(this); m_tab_scroll_left_button_rect.SetWidth(m_art->GetScrollButtonMinimumSize(temp_dc, this, wxRIBBON_SCROLL_BTN_LEFT | wxRIBBON_SCROLL_BTN_NORMAL | wxRIBBON_SCROLL_BTN_FOR_TABS).GetWidth()); m_tab_scroll_left_button_rect.SetHeight(m_tab_height); m_tab_scroll_left_button_rect.SetX(m_tab_margin_left); @@ -846,7 +847,7 @@ void wxRibbonBar::ScrollTabBar(int amount) if(show_right != (m_tab_scroll_right_button_rect.GetWidth() != 0) || show_left != (m_tab_scroll_left_button_rect.GetWidth() != 0)) { - wxMemoryDC temp_dc; + wxClientDC temp_dc(this); if(show_left) { m_tab_scroll_left_button_rect.SetWidth(m_art->GetScrollButtonMinimumSize(temp_dc, this, wxRIBBON_SCROLL_BTN_LEFT | wxRIBBON_SCROLL_BTN_NORMAL | wxRIBBON_SCROLL_BTN_FOR_TABS).GetWidth()); @@ -903,6 +904,11 @@ void wxRibbonBar::OnMouseRightUp(wxMouseEvent& evt) DoMouseButtonCommon(evt, wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP); } +void wxRibbonBar::OnMouseDoubleClick(wxMouseEvent& evt) +{ + DoMouseButtonCommon(evt, wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK); +} + void wxRibbonBar::DoMouseButtonCommon(wxMouseEvent& evt, wxEventType tab_event_type) { wxRibbonPageTabInfo *tab = HitTestTabs(evt.GetPosition());