X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/13a3888794c97e06686a9f40189d63f708e891ba..cbe6a493b66ad18b6a1f490589f2706f0f841b01:/src/common/wrapsizer.cpp diff --git a/src/common/wrapsizer.cpp b/src/common/wrapsizer.cpp index 91a43c2ea5..9f2261e67c 100644 --- a/src/common/wrapsizer.cpp +++ b/src/common/wrapsizer.cpp @@ -59,7 +59,7 @@ private: wxSizerItem& m_item; const int m_propOld; - DECLARE_NO_COPY_CLASS(wxPropChanger) + wxDECLARE_NO_COPY_CLASS(wxPropChanger); }; } // anonymous namespace @@ -68,7 +68,7 @@ private: // wxWrapSizer implementation // ============================================================================ -IMPLEMENT_DYNAMIC_CLASS(wxWrapSizer, wxBoxSizer); +IMPLEMENT_DYNAMIC_CLASS(wxWrapSizer, wxBoxSizer) wxWrapSizer::wxWrapSizer(int orient, int flags) : wxBoxSizer(orient), @@ -112,7 +112,7 @@ void wxWrapSizer::ClearRows() row->GetChildren().clear(); wxPropChanger * const - propChanger = wx_static_cast(wxPropChanger *, item->GetUserData()); + propChanger = static_cast(item->GetUserData()); if ( propChanger ) { // this deletes propChanger and so restores the old proportion @@ -177,15 +177,6 @@ wxSize wxWrapSizer::CalcMin() // layout, trying to maintain the possibility to re-arrange lines by // sizing - wxSize szBoundary; // Keep track of boundary so we don't overflow - if ( m_availSize > 0 ) - { - if ( m_dirInform == m_orient ) - szBoundary = SizeFromMajorMinor(m_availSize, m_availableOtherDir); - else - szBoundary = SizeFromMajorMinor(m_availableOtherDir, m_availSize); - } - if ( !m_lastUsed ) { // Case 1 above: InformFirstDirection() has just been called @@ -195,21 +186,22 @@ wxSize wxWrapSizer::CalcMin() // a wrap sizer, depending on whether the first reported size component // is the opposite as our own orientation (the simpler case) or the same // one (more complicated). - wxSize szMinPrev = m_minSize; if ( m_dirInform == m_orient ) CalcMinFromMajor(m_availSize); else CalcMinFromMinor(m_availSize); - - // If overflowing given boundary, go back to previous min size - if ( m_minSize.x > szBoundary.x || m_minSize.y>szBoundary.y ) - m_minSize = szMinPrev; } else // Case 2 above: not immediately after InformFirstDirection() { if ( m_availSize > 0 ) { - CalcMinFittingSize(szBoundary); + wxSize szAvail; // Keep track of boundary so we don't overflow + if ( m_dirInform == m_orient ) + szAvail = SizeFromMajorMinor(m_availSize, m_availableOtherDir); + else + szAvail = SizeFromMajorMinor(m_availableOtherDir, m_availSize); + + CalcMinFittingSize(szAvail); } else // Initial calculation, before we have size available to us { @@ -425,7 +417,7 @@ void wxWrapSizer::CalcMinFromMinor(int totMinor) wxSizerItem *item = node->GetData(); if ( item->IsShown() ) { - sz = item->GetMinSize(); + sz = item->GetMinSizeWithBorder(); if ( line->m_width+SizeInMajorDir(sz)>lineSize ) { line = new wxWrapLine; @@ -458,7 +450,7 @@ void wxWrapSizer::CalcMinFromMinor(int totMinor) // Take what is not used on this line, see how much extension we get // by adding first item on next line. int size = lineSize-lines[ix]->m_width; // Left over at end of this line - int extSize = GetSizeInMajorDir(lines[ix+1]->m_first->GetMinSize()) - size; + int extSize = GetSizeInMajorDir(lines[ix+1]->m_first->GetMinSizeWithBorder()) - size; if ( (extSize>=tailSize && (extSizebestExtSize && bestExtSizeIsShown() ) continue; - wxSize minItemSize = item->GetMinSize(); + wxSize minItemSize = item->GetMinSizeWithBorder(); const int itemMajor = SizeInMajorDir(minItemSize); const int itemMinor = SizeInMinorDir(minItemSize); if ( itemMajor > 0 && itemMajor < m_minItemMajor )