]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/notebook.h
fixing overrelease and out-of-bounds write, fixes #13725
[wxWidgets.git] / include / wx / notebook.h
index 96278d07d393b3b39bca600ee914e0caf37cc9bf..23111563923702c386a8388d6ab5638a5aab1ae0 100644 (file)
@@ -56,6 +56,48 @@ typedef wxWindow wxNotebookPage;  // so far, any window can be a page
 
 extern WXDLLIMPEXP_DATA_CORE(const char) wxNotebookNameStr[];
 
+#if wxUSE_EXTENDED_RTTI
+
+// ----------------------------------------------------------------------------
+// XTI accessor
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxNotebookPageInfo : public wxObject
+{
+public:
+    wxNotebookPageInfo() { m_page = NULL; m_imageId = -1; m_selected = false; }
+    virtual ~wxNotebookPageInfo() { }
+    
+    bool Create(wxNotebookPage *page,
+                const wxString& text,
+                bool selected,
+                int imageId)
+    {
+        m_page = page;
+        m_text = text;
+        m_selected = selected;
+        m_imageId = imageId;
+        return true;
+    }
+    
+    wxNotebookPage* GetPage() const { return m_page; }
+    wxString GetText() const { return m_text; }
+    bool GetSelected() const { return m_selected; }
+    int GetImageId() const { return m_imageId; }
+    
+private:
+    wxNotebookPage *m_page;
+    wxString m_text;
+    bool m_selected;
+    int m_imageId;
+    
+    DECLARE_DYNAMIC_CLASS(wxNotebookPageInfo)
+};
+
+WX_DECLARE_EXPORTED_LIST(wxNotebookPageInfo, wxNotebookPageInfoList );
+
+#endif
+
 // ----------------------------------------------------------------------------
 // wxNotebookBase: define wxNotebook interface
 // ----------------------------------------------------------------------------
@@ -96,14 +138,23 @@ public:
     bool SendPageChangingEvent(int nPage);
 
     // sends the event about page change from old to new (or GetSelection() if
-    // new is -1)
-    void SendPageChangedEvent(int nPageOld, int nPageNew = -1);
+    // new is wxNOT_FOUND)
+    void SendPageChangedEvent(int nPageOld, int nPageNew = wxNOT_FOUND);
 
     // wxBookCtrlBase overrides this method to return false but we do need
     // focus because we have tabs
     virtual bool AcceptsFocus() const { return wxControl::AcceptsFocus(); }
 
+#if wxUSE_EXTENDED_RTTI    
+    // XTI accessors
+    virtual void AddPageInfo( wxNotebookPageInfo* info );
+    virtual const wxNotebookPageInfoList& GetPageInfos() const;
+#endif
+        
 protected:
+#if wxUSE_EXTENDED_RTTI    
+    wxNotebookPageInfoList m_pageInfos;
+#endif    
     wxDECLARE_NO_COPY_CLASS(wxNotebookBase);
 };