]> git.saurik.com Git - wxWidgets.git/commitdiff
call wxFlexGridSizer::AddGrowableRow/Col() only after creating the sizer children...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Dec 2008 22:33:08 +0000 (22:33 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Dec 2008 22:33:08 +0000 (22:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57519 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/xrc/xh_sizer.h
src/xrc/xh_sizer.cpp

index e7133e6e5ad7c929aa98ba3137edb80cbf9d5630..a6cbe7a31c0d085860547146d617ecd71aab0fa8 100644 (file)
@@ -18,8 +18,6 @@
 #include "wx/sizer.h"
 #include "wx/gbsizer.h"
 
-class WXDLLIMPEXP_FWD_CORE wxSizer;
-
 class WXDLLIMPEXP_XRC wxSizerXmlHandler : public wxXmlResourceHandler
 {
     DECLARE_DYNAMIC_CLASS(wxSizerXmlHandler)
@@ -45,7 +43,7 @@ private:
     wxSizer*  Handle_wxStaticBoxSizer();
 #endif
     wxSizer*  Handle_wxGridSizer();
-    wxSizer*  Handle_wxFlexGridSizer();
+    wxFlexGridSizer* Handle_wxFlexGridSizer();
     wxSizer*  Handle_wxGridBagSizer();
     wxSizer*  Handle_wxWrapSizer();
 
index ea64786b64add418d833c093d8d3fc791184b6b7..6e2d92cf5fa1b19f299835461e4312bb77042e10 100644 (file)
@@ -197,6 +197,7 @@ wxObject* wxSizerXmlHandler::Handle_spacer()
 wxObject* wxSizerXmlHandler::Handle_sizer()
 {
     wxSizer *sizer = NULL;
+    wxFlexGridSizer *flexsizer = NULL;
 
     wxXmlNode *parentNode = m_node->GetParent();
 
@@ -210,21 +211,19 @@ wxObject* wxSizerXmlHandler::Handle_sizer()
 
     if (m_class == wxT("wxBoxSizer"))
         sizer = Handle_wxBoxSizer();
-
 #if wxUSE_STATBOX
     else if (m_class == wxT("wxStaticBoxSizer"))
         sizer = Handle_wxStaticBoxSizer();
 #endif
-
     else if (m_class == wxT("wxGridSizer"))
         sizer = Handle_wxGridSizer();
-
     else if (m_class == wxT("wxFlexGridSizer"))
-        sizer = Handle_wxFlexGridSizer();
-
+    {
+        flexsizer = Handle_wxFlexGridSizer();
+        sizer = flexsizer;
+    }
     else if (m_class == wxT("wxGridBagSizer"))
         sizer = Handle_wxGridBagSizer();
-
     else if (m_class == wxT("wxWrapSizer"))
         sizer = Handle_wxWrapSizer();
 
@@ -249,6 +248,13 @@ wxObject* wxSizerXmlHandler::Handle_sizer()
 
     CreateChildren(m_parent, true/*only this handler*/);
 
+    // set growable rows and cols for sizers which support this
+    if ( flexsizer )
+    {
+        SetGrowables(flexsizer, wxT("growablerows"), true);
+        SetGrowables(flexsizer, wxT("growablecols"), false);
+    }
+
     // restore state
     m_isInside = old_ins;
     m_parentSizer = old_par;
@@ -308,24 +314,16 @@ wxSizer*  wxSizerXmlHandler::Handle_wxGridSizer()
 }
 
 
-wxSizer*  wxSizerXmlHandler::Handle_wxFlexGridSizer()
+wxFlexGridSizer* wxSizerXmlHandler::Handle_wxFlexGridSizer()
 {
-    wxFlexGridSizer *sizer =
-        new wxFlexGridSizer(GetLong(wxT("rows")), GetLong(wxT("cols")),
-                            GetDimension(wxT("vgap")), GetDimension(wxT("hgap")));
-    SetGrowables(sizer, wxT("growablerows"), true);
-    SetGrowables(sizer, wxT("growablecols"), false);
-    return sizer;
+    return new wxFlexGridSizer(GetLong(wxT("rows")), GetLong(wxT("cols")),
+                               GetDimension(wxT("vgap")), GetDimension(wxT("hgap")));
 }
 
 
 wxSizer*  wxSizerXmlHandler::Handle_wxGridBagSizer()
 {
-    wxGridBagSizer *sizer =
-        new wxGridBagSizer(GetDimension(wxT("vgap")), GetDimension(wxT("hgap")));
-    SetGrowables(sizer, wxT("growablerows"), true);
-    SetGrowables(sizer, wxT("growablecols"), false);
-    return sizer;
+    return new wxGridBagSizer(GetDimension(wxT("vgap")), GetDimension(wxT("hgap")));
 }
 
 wxSizer*  wxSizerXmlHandler::Handle_wxWrapSizer()
@@ -346,13 +344,15 @@ void wxSizerXmlHandler::SetGrowables(wxFlexGridSizer* sizer,
     while (tkn.HasMoreTokens())
     {
         if (!tkn.GetNextToken().ToULong(&l))
+        {
             wxLogError(wxT("growable[rows|cols] must be comma-separated list of row numbers"));
-        else {
-            if (rows)
-                sizer->AddGrowableRow(l);
-            else
-                sizer->AddGrowableCol(l);
+            break;
         }
+
+        if (rows)
+            sizer->AddGrowableRow(l);
+        else
+            sizer->AddGrowableCol(l);
     }
 }