X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/083f7497d34a1df453b92ab411aace3fc4ace927..609533d54db83ee9d85fe7ad9589521fcf3f6be1:/include/wx/notebook.h diff --git a/include/wx/notebook.h b/include/wx/notebook.h index 8c18691b7c..371065064c 100644 --- a/include/wx/notebook.h +++ b/include/wx/notebook.h @@ -12,7 +12,7 @@ #ifndef _WX_NOTEBOOK_H_BASE_ #define _WX_NOTEBOOK_H_BASE_ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "notebookbase.h" #endif @@ -28,6 +28,19 @@ #include "wx/dynarray.h" #include "wx/imaglist.h" +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// wxNotebook hit results +enum +{ + wxNB_HITTEST_NOWHERE = 1, // not on tab + wxNB_HITTEST_ONICON = 2, // on icon + wxNB_HITTEST_ONLABEL = 4, // on label + wxNB_HITTEST_ONITEM = wxNB_HITTEST_ONICON | wxNB_HITTEST_ONLABEL +}; + // ---------------------------------------------------------------------------- // types // ---------------------------------------------------------------------------- @@ -35,7 +48,7 @@ // array of notebook pages typedef wxWindow wxNotebookPage; // so far, any window can be a page -WX_DEFINE_EXPORTED_ARRAY(wxNotebookPage *, wxArrayPages); +WX_DEFINE_EXPORTED_ARRAY_NO_PTR(wxNotebookPage *, wxArrayPages); #define wxNOTEBOOK_NAME _T("notebook") @@ -107,7 +120,7 @@ public: virtual void SetTabSize(const wxSize& sz) = 0; // calculate the size of the notebook from the size of its page - virtual wxSize CalcSizeFromPage(const wxSize& sizePage); + virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const; // operations // ---------- @@ -144,6 +157,14 @@ public: // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events virtual int SetSelection(int nPage) = 0; + // hit test, returns which tab is hit and, optionally, where (icon, label) + // (not implemented on all platforms) + virtual int HitTest(const wxPoint& WXUNUSED(pt), + long * WXUNUSED(flags) = NULL) const + { + return wxNOT_FOUND; + } + // cycle thru the tabs void AdvanceSelection(bool forward = TRUE) { @@ -155,6 +176,8 @@ public: protected: // remove the page and return a pointer to it virtual wxNotebookPage *DoRemovePage(int page); + // return the minimum size large enough to display the largest page entirely + virtual wxSize DoGetBestSize() const; // common part of all ctors void Init(); @@ -196,19 +219,13 @@ private: int m_nSel, // currently selected page m_nOldSel; // previously selected page - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxNotebookEvent) }; // ---------------------------------------------------------------------------- // event types and macros for them // ---------------------------------------------------------------------------- -#if defined(__BORLANDC__) && defined(__WIN16__) - // For 16-bit BC++, these 2 would be identical otherwise (truncated) - #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED wxEVT_COMMAND_NB_PAGE_CHANGED - #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING wxEVT_COMMAND_NB_PAGE_CHANGING -#endif - BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, 802) DECLARE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, 803) @@ -216,28 +233,6 @@ END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); -// Truncation in 16-bit BC++ means we need to define these differently -#if defined(__BORLANDC__) && defined(__WIN16__) -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - DECLARE_EVENT_TABLE_ENTRY( \ - wxEVT_COMMAND_NB_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - ), - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - DECLARE_EVENT_TABLE_ENTRY( \ - wxEVT_COMMAND_NB_PAGE_CHANGING, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - ), - -#else - #define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ @@ -256,8 +251,6 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); NULL \ ), -#endif - // ---------------------------------------------------------------------------- // wxNotebook class itself // ---------------------------------------------------------------------------- @@ -265,11 +258,7 @@ typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); #if defined(__WXUNIVERSAL__) #include "wx/univ/notebook.h" #elif defined(__WXMSW__) - #ifdef __WIN16__ - #include "wx/generic/notebook.h" - #else - #include "wx/msw/notebook.h" - #endif + #include "wx/msw/notebook.h" #elif defined(__WXMOTIF__) #include "wx/generic/notebook.h" #elif defined(__WXGTK__)