WX_DEFINE_EXPORTED_ARRAY_PTR(wxWindow *, wxArrayPages);
-class WXDLLEXPORT wxImageList;
-class WXDLLEXPORT wxBookCtrlBaseEvent;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxBookCtrlBaseEvent;
// ----------------------------------------------------------------------------
// constants
wxBK_HITTEST_ONPAGE = 8 // not on tab control, but over the selected page
};
+// wxBookCtrl flags (common for wxNotebook, wxListbook, wxChoicebook, wxTreebook)
+#define wxBK_DEFAULT 0x0000
+#define wxBK_TOP 0x0010
+#define wxBK_BOTTOM 0x0020
+#define wxBK_LEFT 0x0040
+#define wxBK_RIGHT 0x0080
+#define wxBK_ALIGN_MASK (wxBK_TOP | wxBK_BOTTOM | wxBK_LEFT | wxBK_RIGHT)
+
// ----------------------------------------------------------------------------
// wxBookCtrlBase
// ----------------------------------------------------------------------------
// returns the sizer containing the control, if any
wxSizer* GetControlSizer() const { return m_controlSizer; }
+
// operations
// ----------
// remove one page from the notebook, without deleting it
virtual bool RemovePage(size_t n)
{
- InvalidateBestSize();
+ DoInvalidateBestSize();
return DoRemovePage(n) != NULL;
}
// remove all pages and delete them
virtual bool DeleteAllPages()
{
- InvalidateBestSize();
+ DoInvalidateBestSize();
WX_CLEAR_ARRAY(m_pages);
return true;
}
bool bSelect = false,
int imageId = -1)
{
- InvalidateBestSize();
+ DoInvalidateBestSize();
return InsertPage(GetPageCount(), page, text, bSelect, imageId);
}
// we do have multiple pages
virtual bool HasMultiplePages() const { return true; }
+ // we don't want focus for ourselves
+ virtual bool AcceptsFocus() const { return false; }
+
protected:
// flags for DoSetSelection()
enum
// helper: get the next page wrapping if we reached the end
int GetNextPage(bool forward) const;
- // Always rely on GetBestSize, which will look at all the pages
- virtual void SetInitialBestSize(const wxSize& WXUNUSED(size)) { }
-
// Lay out controls
void DoSize();
+ // This method also invalidates the size of the controller and should be
+ // called instead of just InvalidateBestSize() whenever pages are added or
+ // removed as this also affects the controller
+ void DoInvalidateBestSize();
+
#if wxUSE_HELP
// Show the help for the corresponding page
void OnHelp(wxHelpEvent& event);
bool m_fitToCurrentPage;
// the sizer containing the choice control
- wxSizer* m_controlSizer;
+ wxSizer *m_controlSizer;
// the margin around the choice control
- int m_controlMargin;
+ int m_controlMargin;
private: