X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9cf0f6ae4f20919ec35834109914f825f10a4363..57b5c44a4f7686efc98ad3bbec201017fb45e1d3:/src/generic/toolbkg.cpp?ds=sidebyside diff --git a/src/generic/toolbkg.cpp b/src/generic/toolbkg.cpp index e0cbd98b81..f85a27462b 100644 --- a/src/generic/toolbkg.cpp +++ b/src/generic/toolbkg.cpp @@ -95,7 +95,7 @@ bool wxToolbook::Create(wxWindow *parent, orient = wxTB_VERTICAL; // TODO: make more configurable - + #if defined(__WXMAC__) && wxUSE_TOOLBAR && wxUSE_BMPBUTTON if (style & wxBK_BUTTONBAR) { @@ -309,6 +309,39 @@ void wxToolbook::Realize() DoSize(); } +int wxToolbook::HitTest(const wxPoint& pt, long *flags) const +{ + int pagePos = wxNOT_FOUND; + + if ( flags ) + *flags = wxBK_HITTEST_NOWHERE; + + // convert from wxToolbook coordinates to wxToolBar ones + const wxToolBarBase * const tbar = GetToolBar(); + const wxPoint tbarPt = tbar->ScreenToClient(ClientToScreen(pt)); + + // is the point over the toolbar? + if ( wxRect(tbar->GetSize()).Contains(tbarPt) ) + { + const wxToolBarToolBase * const + tool = tbar->FindToolForPosition(tbarPt.x, tbarPt.y); + + if ( tool ) + { + pagePos = tbar->GetToolPos(tool->GetId()); + if ( flags ) + *flags = wxBK_HITTEST_ONICON | wxBK_HITTEST_ONLABEL; + } + } + else // not over the toolbar + { + if ( flags && GetPageRect().Contains(pt) ) + *flags |= wxBK_HITTEST_ONPAGE; + } + + return pagePos; +} + void wxToolbook::OnIdle(wxIdleEvent& event) { if (m_needsRealizing)