#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
IMPLEMENT_DYNAMIC_CLASS(wxListbook, wxBookCtrlBase)
IMPLEMENT_DYNAMIC_CLASS(wxListbookEvent, wxNotifyEvent)
+#if !WXWIN_COMPATIBILITY_EVENT_TYPES
const wxEventType wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING = wxNewEventType();
const wxEventType wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED = wxNewEventType();
+#endif
const int wxID_LISTBOOKLISTVIEW = wxNewId();
BEGIN_EVENT_TABLE(wxListbook, wxBookCtrlBase)
wxBookCtrlBase::OnSize(event);
}
+int wxListbook::HitTest(const wxPoint& pt, long * WXUNUSED(flags)) const
+{
+ int pagePos = wxNOT_FOUND;
+
+ const wxPoint clientPt = ClientToScreen(GetListView()->ScreenToClient(pt));
+
+ if ( wxRect(GetListView()->GetSize()).Inside(clientPt) )
+ {
+ int flagsList;
+ pagePos = GetListView()->HitTest(clientPt, flagsList);
+
+ if ( !(flagsList & wxLIST_HITTEST_ONITEM) )
+ {
+ pagePos = wxNOT_FOUND;
+ }
+ }
+
+ return pagePos;
+}
+
wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const
{
// we need to add the size of the list control and the border between
SetSelection(selNew);
InvalidateBestSize();
+ // GetListView()->InvalidateBestSize();
GetListView()->Arrange();
+
+ if (GetPageCount() == 1)
+ {
+ wxSizeEvent sz(GetSize(), GetId());
+ ProcessEvent(sz);
+ }
return true;
}
}
GetListView()->Arrange();
+ if (GetPageCount() == 0)
+ {
+ wxSizeEvent sz(GetSize(), GetId());
+ ProcessEvent(sz);
+ }
}
return win;
bool wxListbook::DeleteAllPages()
{
GetListView()->DeleteAllItems();
- return wxBookCtrlBase::DeleteAllPages();
+ if (!wxBookCtrlBase::DeleteAllPages())
+ return false;
+
+ m_selection = -1;
+
+ wxSizeEvent sz(GetSize(), GetId());
+ ProcessEvent(sz);
+
+ return true;
}
// ----------------------------------------------------------------------------