X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/93b87dd910cadc9d20b4a5b2a17e1bee5e60e2bc..4da0f1bb88822dba566854b609e520e48cb4f68e:/src/common/sizer.cpp diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index 88c971ab58..5f4a0a6ad1 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -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