fill in flags parameter of HitTest() for all book controls; added new wxNB_HITTEST_ONPAGE bit

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-06-14 15:54:24 +00:00
parent 6dcf9888aa
commit d0a84b6338
11 changed files with 173 additions and 26 deletions

View File

@@ -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 = wxNB_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 |= wxNB_HITTEST_ONICON;
if ( flagsTree & wxTREE_HITTEST_ONITEMLABEL )
*flags |= wxNB_HITTEST_ONLABEL;
}
}
else // not over the tree
{
if ( flags && GetPageRect().Inside( pt ) )
*flags |= wxNB_HITTEST_ONPAGE;
}
return pagePos;