]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix handling of not fully specified min/max size in wxBoxSizer.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 30 Sep 2012 22:19:47 +0000 (22:19 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 30 Sep 2012 22:19:47 +0000 (22:19 +0000)
wxSizerItem::AddBorderToSize() added in r72344 (see #11497) didn't work
correctly as it replaced unspecified (i.e. set to -1) components of wxSize
with the small positive values that did take effect, contrary to the
intention.

Fix it to only adjust the actually set component(s) of wxSize.

Closes #14696.

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

src/common/sizer.cpp

index 88c971ab58c0d6a6cc3ca3adff3b1882e57d434d..bcc5bad25b7c57f2804f2963aec91c8a30800707 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;
 }