]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/sizer.h
made wxTLW::SetIcon() non-virtual, it was already implemented in terms of
[wxWidgets.git] / include / wx / sizer.h
index 5cceec9ca86e062b65a0d966459a6b277eaeac31..8aa759e376e2661663c537395395b58420731ba1 100644 (file)
@@ -224,7 +224,7 @@ public:
     {
         Init(flags);
 
     {
         Init(flags);
 
-        SetWindow(window);
+        DoSetWindow(window);
     }
 
     // subsizer
     }
 
     // subsizer
@@ -239,7 +239,7 @@ public:
     {
         Init(flags);
 
     {
         Init(flags);
 
-        SetSizer(sizer);
+        DoSetSizer(sizer);
     }
 
     // spacer
     }
 
     // spacer
@@ -255,7 +255,7 @@ public:
     {
         Init(flags);
 
     {
         Init(flags);
 
-        SetSpacer(width, height);
+        DoSetSpacer(wxSize(width, height));
     }
 
     wxSizerItem();
     }
 
     wxSizerItem();
@@ -340,20 +340,51 @@ public:
     wxPoint GetPosition() const
         { return m_pos; }
 
     wxPoint GetPosition() const
         { return m_pos; }
 
+    // these functions delete the current contents of the item if it's a sizer
+    // or a spacer but not if it is a window
+    void AssignWindow(wxWindow *window)
+    {
+        Free();
+        DoSetWindow(window);
+    }
+
+    void AssignSizer(wxSizer *sizer)
+    {
+        Free();
+        DoSetSizer(sizer);
+    }
+
+    void AssignSpacer(const wxSize& size)
+    {
+        Free();
+        DoSetSpacer(size);
+    }
+
+    void AssignSpacer(int w, int h) { AssignSpacer(wxSize(w, h)); }
 
 
-    // these functions do not free old sizer/spacer
-    void SetWindow(wxWindow *window);
-    void SetSizer(wxSizer *sizer);
-    void SetSpacer(const wxSize& size);
-    void SetSpacer(int width, int height) { SetSpacer(wxSize(width, height)); }
+#if WXWIN_COMPATIBILITY_2_8
+    // these functions do not free the old sizer/spacer and so can easily
+    // provoke the memory leaks and so shouldn't be used, use Assign() instead
+    wxDEPRECATED( void SetWindow(wxWindow *window) );
+    wxDEPRECATED( void SetSizer(wxSizer *sizer) );
+    wxDEPRECATED( void SetSpacer(const wxSize& size) );
+    wxDEPRECATED( void SetSpacer(int width, int height) );
+#endif // WXWIN_COMPATIBILITY_2_8
 
 protected:
     // common part of several ctors
 
 protected:
     // common part of several ctors
-    void Init() { m_userData = NULL; }
+    void Init() { m_userData = NULL; m_kind = Item_None; }
 
     // common part of ctors taking wxSizerFlags
     void Init(const wxSizerFlags& flags);
 
 
     // common part of ctors taking wxSizerFlags
     void Init(const wxSizerFlags& flags);
 
+    // free current contents
+    void Free();
+
+    // common parts of Set/AssignXXX()
+    void DoSetWindow(wxWindow *window);
+    void DoSetSizer(wxSizer *sizer);
+    void DoSetSpacer(const wxSize& size);
 
     // discriminated union: depending on m_kind one of the fields is valid
     enum
 
     // discriminated union: depending on m_kind one of the fields is valid
     enum
@@ -848,6 +879,31 @@ private:
 // inline functions implementation
 // ----------------------------------------------------------------------------
 
 // inline functions implementation
 // ----------------------------------------------------------------------------
 
+#if WXWIN_COMPATIBILITY_2_8
+
+inline void wxSizerItem::SetWindow(wxWindow *window)
+{
+    DoSetWindow(window);
+}
+
+inline void wxSizerItem::SetSizer(wxSizer *sizer)
+{
+    DoSetSizer(sizer);
+}
+
+inline void wxSizerItem::SetSpacer(const wxSize& size)
+{
+    DoSetSpacer(size);
+}
+
+inline void wxSizerItem::SetSpacer(int width, int height)
+{ 
+    DoSetSpacer(wxSize(width, height)); 
+} 
+
+#endif // WXWIN_COMPATIBILITY_2_8
+
+
 inline wxSizerItem*
 wxSizer::Add( wxSizerItem *item )
 {
 inline wxSizerItem*
 wxSizer::Add( wxSizerItem *item )
 {
@@ -1002,5 +1058,4 @@ wxSizer::InsertStretchSpacer(size_t index, int prop)
     return Insert(index, 0, 0, prop);
 }
 
     return Insert(index, 0, 0, prop);
 }
 
-
 #endif // __WXSIZER_H__
 #endif // __WXSIZER_H__