X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9eddec696f06d65a80e7339b2fae14fcb55f8383..7bd236e6da74203ba429941d3f9643291494b420:/src/generic/treebkg.cpp diff --git a/src/generic/treebkg.cpp b/src/generic/treebkg.cpp index 4bce15eca2..57593a5bb1 100644 --- a/src/generic/treebkg.cpp +++ b/src/generic/treebkg.cpp @@ -650,6 +650,20 @@ int wxTreebook::DoSetSelection(size_t pagePos) return oldSel; } +wxTreebookPage *wxTreebook::DoGetCurrentPage() const +{ + if ( m_selection == wxNOT_FOUND ) + return NULL; + + wxTreebookPage *page = wxBookCtrlBase::GetPage(m_selection); + if ( !page && m_actualSelection != wxNOT_FOUND ) + { + page = wxBookCtrlBase::GetPage(m_actualSelection); + } + + return page; +} + void wxTreebook::SetImageList(wxImageList *imageList) { wxBookCtrlBase::SetImageList(imageList); @@ -709,18 +723,25 @@ void wxTreebook::OnTreeNodeExpandedCollapsed(wxTreeEvent & event) // wxTreebook geometry management // ---------------------------------------------------------------------------- -wxTreebookPage * wxTreebook::DoGetCurrentPage() const +int wxTreebook::HitTest(wxPoint const & pt, long * WXUNUSED(flags)) const { - if ( m_selection == wxNOT_FOUND ) - return NULL; + int pagePos = wxNOT_FOUND; - wxTreebookPage *page = wxBookCtrlBase::GetPage(m_selection); - if ( !page && m_actualSelection != wxNOT_FOUND ) + wxTreeCtrl * const tree = GetTreeCtrl(); + const wxPoint treePt = ClientToScreen(tree->ScreenToClient(pt)); + + if ( wxRect(tree->GetSize()).Inside(treePt) ) { - page = wxBookCtrlBase::GetPage(m_actualSelection); + int flagsTree; + wxTreeItemId id = tree->HitTest(treePt, flagsTree); + + if ( id.IsOk() && (flagsTree & wxTREE_HITTEST_ONITEM) ) + { + pagePos = DoInternalFindPageById(id); + } } - return page; + return pagePos; } #endif // wxUSE_TREEBOOK