]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
Fix compilation with MinGW -std=c++11 option.
[wxWidgets.git] / src / common / sizer.cpp
index 88c971ab58c0d6a6cc3ca3adff3b1882e57d434d..5f4a0a6ad15b8bf6d790d0b239a15355604bbb8d 100644 (file)
@@ -209,18 +209,28 @@ void wxSizerItem::DoSetSpacer(const wxSize& size)
 
 wxSize wxSizerItem::AddBorderToSize(const wxSize& size) const
 {
-    if (size == wxDefaultSize)
-        return size;
-
     wxSize result = size;
-    if (m_flag & wxWEST)
-        result.x += m_border;
-    if (m_flag & wxEAST)
-        result.x += m_border;
-    if (m_flag & wxNORTH)
-        result.y += m_border;
-    if (m_flag & wxSOUTH)
-        result.y += m_border;
+
+    // Notice that we shouldn't modify the unspecified component(s) of the
+    // size, it's perfectly valid to have either min or max size specified in
+    // one direction only and it shouldn't be applied in the other one then.
+
+    if ( result.x != wxDefaultCoord )
+    {
+        if (m_flag & wxWEST)
+            result.x += m_border;
+        if (m_flag & wxEAST)
+            result.x += m_border;
+    }
+
+    if ( result.y != wxDefaultCoord )
+    {
+        if (m_flag & wxNORTH)
+            result.y += m_border;
+        if (m_flag & wxSOUTH)
+            result.y += m_border;
+    }
+
     return result;
 }
 
@@ -2092,9 +2102,8 @@ void wxBoxSizer::RecalcSizes()
         minMajorSize += GetSizeInMajorDir(item->GetMinSizeWithBorder());
     }
 
-    // update our min size and delta which may have changed
+    // update our min size have changed
     SizeInMajorDir(m_minSize) = minMajorSize;
-    delta = totalMajorSize - minMajorSize;
 
 
     // space and sum of proportions for the remaining items, both may change