}
void wxAuiDefaultToolBarArt::DrawOverflowButton(wxDC& dc,
- wxWindow* wnd,
+ wxWindow* /*wnd*/,
const wxRect& rect,
int state)
{
if (state & wxAUI_BUTTON_STATE_HOVER ||
state & wxAUI_BUTTON_STATE_PRESSED)
{
- wxRect cli_rect = wnd->GetClientRect();
wxColor light_gray_bg = m_highlightColour.ChangeLightness(170);
if (m_flags & wxAUI_TB_VERTICAL)
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;
case wxAUI_DOCK_LEFT:
return m_vertHintSize;
default:
- wxCHECK_MSG(false, wxDefaultSize, "invalid dock location value");
+ wxFAIL_MSG("invalid dock location value");
}
+ return wxDefaultSize;
}
bool wxAuiToolBar::IsPaneValid(const wxAuiPaneInfo& pane) const
{
bool is_enabled;
if (item.m_window)
- is_enabled = item.m_window->IsEnabled();
+ is_enabled = item.m_window->IsThisEnabled();
else
is_enabled = (item.m_state & wxAUI_BUTTON_STATE_DISABLED) ? false : true;
}
}
}
-
- DoIdleUpdate();
evt.Skip();
}
+void wxAuiToolBar::UpdateWindowUI(long flags)
+{
+ if ( flags & wxUPDATE_UI_FROMIDLE )
+ {
+ DoIdleUpdate();
+ }
+
+ wxControl::UpdateWindowUI(flags);
+}
+
void wxAuiToolBar::OnPaint(wxPaintEvent& WXUNUSED(evt))
{
wxAutoBufferedPaintDC dc(this);
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
return;
}
- if (m_overflowSizerItem)
+ if (m_overflowSizerItem && m_art)
{
int dropdown_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
if (dropdown_size > 0 &&
evt.m_x > cli_rect.width - dropdown_size &&
evt.m_y >= 0 &&
- evt.m_y < cli_rect.height &&
- m_art)
+ evt.m_y < cli_rect.height)
{
return;
}
if (m_actionItem && hitItem == m_actionItem)
{
- if (hitItem->m_kind == wxITEM_NORMAL)
- {
- wxAuiToolBarEvent e(wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, m_actionItem->m_toolId);
- e.SetEventObject(this);
- e.SetToolId(m_actionItem->m_toolId);
- e.SetClickPoint(m_actionPos);
- GetEventHandler()->ProcessEvent(e);
- DoIdleUpdate();
- }
+ wxAuiToolBarEvent e(wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, m_actionItem->m_toolId);
+ e.SetEventObject(this);
+ e.SetToolId(m_actionItem->m_toolId);
+ e.SetClickPoint(m_actionPos);
+ GetEventHandler()->ProcessEvent(e);
+ DoIdleUpdate();
}
else
{
return;
}
- if (m_overflowSizerItem)
+ if (m_overflowSizerItem && m_art)
{
int dropdown_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
if (dropdown_size > 0 &&
evt.m_x > cli_rect.width - dropdown_size &&
evt.m_y >= 0 &&
- evt.m_y < cli_rect.height &&
- m_art)
+ evt.m_y < cli_rect.height)
{
return;
}
}
else
{
- if (hitItem && (hitItem->m_state & wxAUI_BUTTON_STATE_DISABLED))
- SetHoverItem(NULL);
- else
- SetHoverItem(hitItem);
+ SetHoverItem(hitItem);
// tooltips handling
wxAuiToolBarItem* packingHitItem;