X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/851b88c310ac064e826dfd011d02c6dc5301fc35..c7564c6ac9bacdee10baf38a10ac36afcfa7ce45:/src/generic/treebkg.cpp diff --git a/src/generic/treebkg.cpp b/src/generic/treebkg.cpp index 57593a5bb1..b93e0b3d89 100644 --- a/src/generic/treebkg.cpp +++ b/src/generic/treebkg.cpp @@ -723,13 +723,18 @@ void wxTreebook::OnTreeNodeExpandedCollapsed(wxTreeEvent & event) // wxTreebook geometry management // ---------------------------------------------------------------------------- -int wxTreebook::HitTest(wxPoint const & pt, long * WXUNUSED(flags)) const +int wxTreebook::HitTest(wxPoint const & pt, long * flags) const { int pagePos = wxNOT_FOUND; - wxTreeCtrl * const tree = GetTreeCtrl(); - const wxPoint treePt = ClientToScreen(tree->ScreenToClient(pt)); + if ( flags ) + *flags = wxBK_HITTEST_NOWHERE; + // convert from wxTreebook coorindates to wxTreeCtrl ones + const wxTreeCtrl * const tree = GetTreeCtrl(); + const wxPoint treePt = tree->ScreenToClient(ClientToScreen(pt)); + + // is it over the tree? if ( wxRect(tree->GetSize()).Inside(treePt) ) { int flagsTree; @@ -739,6 +744,25 @@ int wxTreebook::HitTest(wxPoint const & pt, long * WXUNUSED(flags)) const { pagePos = DoInternalFindPageById(id); } + + if ( flags ) + { + if ( pagePos != wxNOT_FOUND ) + *flags = 0; + + if ( flagsTree & (wxTREE_HITTEST_ONITEMBUTTON | + wxTREE_HITTEST_ONITEMICON | + wxTREE_HITTEST_ONITEMSTATEICON) ) + *flags |= wxBK_HITTEST_ONICON; + + if ( flagsTree & wxTREE_HITTEST_ONITEMLABEL ) + *flags |= wxBK_HITTEST_ONLABEL; + } + } + else // not over the tree + { + if ( flags && GetPageRect().Inside( pt ) ) + *flags |= wxBK_HITTEST_ONPAGE; } return pagePos;