]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxSizerItem::SetMinSize that calls m_window->SetSizeHints if not
authorRobin Dunn <robin@alldunn.com>
Wed, 14 Apr 2004 23:45:21 +0000 (23:45 +0000)
committerRobin Dunn <robin@alldunn.com>
Wed, 14 Apr 2004 23:45:21 +0000 (23:45 +0000)
wxFIXED_MINSIZE, SetInitSize and SetItemMinSize uses SetMinSize, and
fixed [ 934651 ] sizeritem's 'minsize' value has no effect in xrc resources

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

contrib/src/xrc/xh_sizer.cpp
include/wx/sizer.h
src/common/sizer.cpp
src/xrc/xh_sizer.cpp

index 5590ded11ea6b64c08ee7ad3061b65a50c36321d..2e3f3e49083bedd973ef99f151c0d46c91edc06f 100644 (file)
@@ -122,7 +122,6 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
     {
         // create a sizer item for it
         wxSizerItem* sitem = MakeSizerItem();
-        SetSizerItemAttributes(sitem);
         
         // now fetch the item to be managed
         bool old_gbs = m_isGBS;
@@ -146,6 +145,9 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
         else 
             wxLogError(wxT("Error in resource."));
 
+        // finally, set other wxSizerItem attributes
+        SetSizerItemAttributes(sitem);
+
         AddSizerItem(sitem);
         return item;
     }
@@ -339,7 +341,7 @@ void wxSizerXmlHandler::SetSizerItemAttributes(wxSizerItem* sitem)
     sitem->SetBorder(GetDimension(wxT("border")));
     wxSize sz = GetSize(wxT("minsize"));
     if (!(sz == wxDefaultSize))
-        sitem->SetInitSize(sz.x, sz.y);
+        sitem->SetMinSize(sz);
     sz = GetSize(wxT("ratio"));
     if (!(sz == wxDefaultSize))
         sitem->SetRatio(sz);
index eeed12325b7e0c587338a281eab2a1c532c0b69a..5f7738dce2dd378ccdb8dbb4da430e2f8b937eac 100644 (file)
@@ -74,8 +74,16 @@ public:
 
     wxSize GetMinSize() const
         { return m_minSize; }
+    void SetMinSize(const wxSize& size)
+        {
+            if (IsWindow() && !(m_flag & wxFIXED_MINSIZE))
+                m_window->SetSizeHints(size);
+            m_minSize = size;            
+        }
+    void SetMinSize( int x, int y )
+        { SetMinSize(wxSize(x, y)); }    
     void SetInitSize( int x, int y )
-        { m_minSize.x = x; m_minSize.y = y; }
+        { SetMinSize(wxSize(x, y)); }
 
     void SetRatio( int width, int height )
         // if either of dimensions is zero, ratio is assumed to be 1
index 424968309fafd072276dbd06ee5b521d6a4fe684..2fd2d9f854c3a31db97e562e5de4d2ed40fe150b 100644 (file)
@@ -735,8 +735,7 @@ bool wxSizer::DoSetItemMinSize( wxWindow *window, int width, int height )
 
         if (item->GetWindow() == window)
         {
-            item->SetInitSize( width, height );
-            item->GetWindow()->SetSizeHints(width, height);
+            item->SetMinSize( width, height );
             return true;
         }
         node = node->GetNext();
@@ -815,9 +814,7 @@ bool wxSizer::DoSetItemMinSize( size_t index, int width, int height )
     else
     {
         // ... but the minimal size of spacers and windows in stored in them
-        item->SetInitSize( width, height );
-        if (item->GetWindow())
-            item->GetWindow()->SetSizeHints(width, height);
+        item->SetMinSize( width, height );
     }
 
     return true;
index 5590ded11ea6b64c08ee7ad3061b65a50c36321d..2e3f3e49083bedd973ef99f151c0d46c91edc06f 100644 (file)
@@ -122,7 +122,6 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
     {
         // create a sizer item for it
         wxSizerItem* sitem = MakeSizerItem();
-        SetSizerItemAttributes(sitem);
         
         // now fetch the item to be managed
         bool old_gbs = m_isGBS;
@@ -146,6 +145,9 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
         else 
             wxLogError(wxT("Error in resource."));
 
+        // finally, set other wxSizerItem attributes
+        SetSizerItemAttributes(sitem);
+
         AddSizerItem(sitem);
         return item;
     }
@@ -339,7 +341,7 @@ void wxSizerXmlHandler::SetSizerItemAttributes(wxSizerItem* sitem)
     sitem->SetBorder(GetDimension(wxT("border")));
     wxSize sz = GetSize(wxT("minsize"));
     if (!(sz == wxDefaultSize))
-        sitem->SetInitSize(sz.x, sz.y);
+        sitem->SetMinSize(sz);
     sz = GetSize(wxT("ratio"));
     if (!(sz == wxDefaultSize))
         sitem->SetRatio(sz);