EVT_SET_CURSOR(wxAuiToolBar::OnSetCursor)
END_EVENT_TABLE()
-
-wxAuiToolBar::wxAuiToolBar(wxWindow* parent,
- wxWindowID id,
- const wxPoint& position,
- const wxSize& size,
- long style)
- : wxControl(parent,
- id,
- position,
- size,
- style | wxBORDER_NONE)
+void wxAuiToolBar::Init()
{
m_sizer = new wxBoxSizer(wxHORIZONTAL);
m_buttonWidth = -1;
m_gripperSizerItem = NULL;
m_overflowSizerItem = NULL;
m_dragging = false;
+ m_gripperVisible = (m_style & wxAUI_TB_GRIPPER) ? true : false;
+ m_overflowVisible = (m_style & wxAUI_TB_OVERFLOW) ? true : false;
+ m_overflowState = 0;
+}
+
+bool wxAuiToolBar::Create(wxWindow* parent,
+ wxWindowID id,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style)
+{
+ style = style|wxBORDER_NONE;
+
+ if (!wxControl::Create(parent, id, pos, size, style))
+ return false;
+
+ m_style = style;
m_orientation = GetOrientation(style);
if (m_orientation == wxBOTH)
{
m_orientation = wxHORIZONTAL;
}
- m_style = style | wxBORDER_NONE;
- m_gripperVisible = (m_style & wxAUI_TB_GRIPPER) ? true : false;
- m_overflowVisible = (m_style & wxAUI_TB_OVERFLOW) ? true : false;
- m_overflowState = 0;
+
SetMargins(5, 5, 2, 2);
SetFont(*wxNORMAL_FONT);
SetArtFlags();
if (style & wxAUI_TB_HORZ_LAYOUT)
SetToolTextOrientation(wxAUI_TBTOOL_TEXT_RIGHT);
SetBackgroundStyle(wxBG_STYLE_CUSTOM);
-}
+ return true;
+}
wxAuiToolBar::~wxAuiToolBar()
{
void wxAuiToolBar::SetHoverItem(wxAuiToolBarItem* pitem)
{
+ if (pitem && (pitem->m_state & wxAUI_BUTTON_STATE_DISABLED))
+ pitem = NULL;
+
wxAuiToolBarItem* former_hover = NULL;
size_t i, count;
Refresh(false);
if (res != -1)
{
- wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, res);
- e.SetEventObject(this);
- GetParent()->GetEventHandler()->ProcessEvent(e);
+ wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, res);
+ event.SetEventObject(this);
+ GetParent()->GetEventHandler()->ProcessEvent(event);
}
}
if(!GetEventHandler()->ProcessEvent(e) || e.GetSkipped())
CaptureMouse();
+ // Ensure hovered item is really ok, as mouse may have moved during
+ // event processing
+ wxPoint cursor_pos_after_evt = ScreenToClient(wxGetMousePosition());
+ SetHoverItem(FindToolByPosition(cursor_pos_after_evt.x, cursor_pos_after_evt.y));
+
DoIdleUpdate();
}
}
SetPressedItem(NULL);
- wxAuiToolBarItem* hitItem = FindToolByPosition(evt.GetX(), evt.GetY());
- if (hitItem && !(hitItem->m_state & wxAUI_BUTTON_STATE_DISABLED))
- {
- SetHoverItem(hitItem);
- }
+ wxAuiToolBarItem* hitItem;
+ hitItem = FindToolByPosition(evt.GetX(), evt.GetY());
+ SetHoverItem(hitItem);
if (m_dragging)
{
ReleaseMouse();
GetEventHandler()->ProcessEvent(e);
+
+ // Ensure hovered item is really ok, as mouse may have moved during
+ // event processing
+ wxPoint cursor_pos_after_evt = ScreenToClient(wxGetMousePosition());
+ SetHoverItem(FindToolByPosition(cursor_pos_after_evt.x, cursor_pos_after_evt.y));
+
DoIdleUpdate();
}
else
}
else
{
- if (hitItem && (hitItem->m_state & wxAUI_BUTTON_STATE_DISABLED))
- SetHoverItem(NULL);
- else
- SetHoverItem(hitItem);
+ SetHoverItem(hitItem);
// tooltips handling
wxAuiToolBarItem* packingHitItem;