#if wxUSE_LISTBOOK
+#include "wx/listbook.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/settings.h"
+#endif
+
#include "wx/listctrl.h"
#include "wx/statline.h"
-#include "wx/listbook.h"
#include "wx/imaglist.h"
-#include "wx/settings.h"
// ----------------------------------------------------------------------------
// various wxWidgets macros
wxBookCtrlBase::OnSize(event);
}
+int wxListbook::HitTest(const wxPoint& pt, long *flags) const
+{
+ int pagePos = wxNOT_FOUND;
+
+ if ( flags )
+ *flags = wxBK_HITTEST_NOWHERE;
+
+ // convert from listbook control coordinates to list control coordinates
+ const wxListView * const list = GetListView();
+ const wxPoint listPt = list->ScreenToClient(ClientToScreen(pt));
+
+ // is the point inside list control?
+ if ( wxRect(list->GetSize()).Contains(listPt) )
+ {
+ int flagsList;
+ pagePos = list->HitTest(listPt, flagsList);
+
+ if ( flags )
+ {
+ if ( pagePos != wxNOT_FOUND )
+ *flags = 0;
+
+ if ( flagsList & (wxLIST_HITTEST_ONITEMICON |
+ wxLIST_HITTEST_ONITEMSTATEICON ) )
+ *flags |= wxBK_HITTEST_ONICON;
+
+ if ( flagsList & wxLIST_HITTEST_ONITEMLABEL )
+ *flags |= wxBK_HITTEST_ONLABEL;
+ }
+ }
+ else // not over list control at all
+ {
+ if ( flags && GetPageRect().Contains(pt) )
+ *flags |= wxBK_HITTEST_ONPAGE;
+ }
+
+ return pagePos;
+}
+
wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const
{
// we need to add the size of the list control and the border between
InvalidateBestSize();
// GetListView()->InvalidateBestSize();
GetListView()->Arrange();
-
+
if (GetPageCount() == 1)
{
wxSizeEvent sz(GetSize(), GetId());
GetListView()->DeleteAllItems();
if (!wxBookCtrlBase::DeleteAllPages())
return false;
-
+
m_selection = -1;
wxSizeEvent sz(GetSize(), GetId());
ProcessEvent(sz);
-
+
return true;
}