X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0eefa6597938743c8fa12bdbfc88c7e41c5a2e6b..2d61788423790686d1193a0d74b1562013246084:/src/aui/auibar.cpp?ds=sidebyside diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index d398e2b795..773ccf41df 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -38,8 +38,6 @@ #ifdef __WXMAC__ #include "wx/osx/private.h" -// for themeing support -#include #endif #include "wx/arrimpl.cpp" @@ -187,8 +185,8 @@ wxAuiDefaultToolBarArt::wxAuiDefaultToolBarArt() m_gripper_pen2 = wxPen(darker3_colour); m_gripper_pen3 = *wxWHITE_PEN; - static unsigned char button_dropdown_bits[] = { 0xe0, 0xf1, 0xfb }; - static unsigned char overflow_bits[] = { 0x80, 0xff, 0x80, 0xc1, 0xe3, 0xf7 }; + static const unsigned char button_dropdown_bits[] = { 0xe0, 0xf1, 0xfb }; + static const unsigned char overflow_bits[] = { 0x80, 0xff, 0x80, 0xc1, 0xe3, 0xf7 }; m_button_dropdown_bmp = wxAuiBitmapFromBits(button_dropdown_bits, 5, 3, *wxBLACK); @@ -555,6 +553,12 @@ wxSize wxAuiDefaultToolBarArt::GetLabelSize( // get item's width width = item.GetMinSize().GetWidth(); + if (width == -1) + { + // no width specified, measure the text ourselves + width = dc.GetTextExtent(item.GetLabel()).GetX(); + } + return wxSize(width, height); } @@ -728,9 +732,9 @@ void wxAuiDefaultToolBarArt::SetElementSize(int element_id, int size) { switch (element_id) { - case wxAUI_TBART_SEPARATOR_SIZE: m_separator_size = size; - case wxAUI_TBART_GRIPPER_SIZE: m_gripper_size = size; - case wxAUI_TBART_OVERFLOW_SIZE: m_overflow_size = size; + case wxAUI_TBART_SEPARATOR_SIZE: m_separator_size = size; break; + case wxAUI_TBART_GRIPPER_SIZE: m_gripper_size = size; break; + case wxAUI_TBART_OVERFLOW_SIZE: m_overflow_size = size; break; } } @@ -833,7 +837,7 @@ wxAuiToolBar::wxAuiToolBar(wxWindow* parent, m_gripper_sizer_item = NULL; m_overflow_sizer_item = NULL; m_dragging = false; - m_style = style; + m_style = style | wxBORDER_NONE; m_gripper_visible = (m_style & wxAUI_TB_GRIPPER) ? true : false; m_overflow_visible = (m_style & wxAUI_TB_OVERFLOW) ? true : false; m_overflow_state = 0; @@ -843,6 +847,7 @@ wxAuiToolBar::wxAuiToolBar(wxWindow* parent, SetExtraStyle(wxWS_EX_PROCESS_IDLE); if (style & wxAUI_TB_HORZ_LAYOUT) SetToolTextOrientation(wxAUI_TBTOOL_TEXT_RIGHT); + SetBackgroundStyle(wxBG_STYLE_CUSTOM); } @@ -950,9 +955,9 @@ wxAuiToolBarItem* wxAuiToolBar::AddTool(int tool_id, item.min_size = wxDefaultSize; item.user_data = 0; item.sticky = false; - - if (item.id == wxID_ANY) - item.id = wxNewId(); + + if (item.id == wxID_ANY) + item.id = wxNewId(); if (!item.disabled_bitmap.IsOk()) { @@ -1018,9 +1023,9 @@ wxAuiToolBarItem* wxAuiToolBar::AddLabel(int tool_id, item.user_data = 0; item.sticky = false; - if (item.id == wxID_ANY) - item.id = wxNewId(); - + if (item.id == wxID_ANY) + item.id = wxNewId(); + m_items.Add(item); return &m_items.Last(); } @@ -1469,7 +1474,7 @@ void wxAuiToolBar::RefreshOverflowState() // find out if the mouse cursor is inside the dropdown rectangle if (overflow_rect.Contains(pt.x, pt.y)) { - if (::wxGetMouseState().LeftDown()) + if (::wxGetMouseState().LeftIsDown()) overflow_state = wxAUI_BUTTON_STATE_PRESSED; else overflow_state = wxAUI_BUTTON_STATE_HOVER; @@ -1496,7 +1501,7 @@ void wxAuiToolBar::ToggleTool(int tool_id, bool state) int i, idx, count; idx = GetToolIndex(tool_id); count = (int)m_items.GetCount(); - + if (idx >= 0 && idx < count) { for (i = idx; i < count; ++i) @@ -1512,7 +1517,7 @@ void wxAuiToolBar::ToggleTool(int tool_id, bool state) m_items[i].state &= ~wxAUI_BUTTON_STATE_CHECKED; } } - + tool->state |= wxAUI_BUTTON_STATE_CHECKED; } else if (tool->kind == wxITEM_CHECK) @@ -2181,7 +2186,7 @@ void wxAuiToolBar::OnIdle(wxIdleEvent& evt) void wxAuiToolBar::OnPaint(wxPaintEvent& WXUNUSED(evt)) { - wxBufferedPaintDC dc(this); + wxAutoBufferedPaintDC dc(this); wxRect cli_rect(wxPoint(0,0), GetClientSize()); @@ -2440,13 +2445,14 @@ void wxAuiToolBar::OnLeftUp(wxMouseEvent& evt) toggle = true; ToggleTool(m_action_item->id, toggle); - + // repaint immediately Refresh(false); Update(); - + wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, m_action_item->id); e.SetEventObject(this); + e.SetInt (toggle); GetEventHandler()->ProcessEvent(e); DoIdleUpdate(); }