#if wxUSE_TREEBOOK
#include "wx/treebook.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/settings.h"
+#endif
+
#include "wx/imaglist.h"
-#include "wx/settings.h"
// ----------------------------------------------------------------------------
// various wxWidgets macros
wxID_TREEBOOKTREEVIEW,
wxDefaultPosition,
wxDefaultSize,
- wxBORDER_SIMPLE |
+#ifndef __WXMSW__
+ wxBORDER_SIMPLE | // On wxMSW this produces a black border which is wrong
+#endif
wxTR_DEFAULT_STYLE |
wxTR_HIDE_ROOT |
wxTR_SINGLE
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);
// 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