don't leave pixels due to rounding errors in wxBoxSizer, allocate the extra pixels to the last item(s) instead, as wxFlexGridSizer (now) does

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2007-04-22 19:32:38 +00:00
parent 97800f6618
commit 7fca7a731d

View File

@ -1660,13 +1660,14 @@ void wxBoxSizer::RecalcSizes()
// the amount of free space which we should redistribute among the
// stretchable items (i.e. those with non zero proportion)
const int delta = SizeInMajorDir(m_size) - SizeInMajorDir(m_minSize);
int delta = SizeInMajorDir(m_size) - SizeInMajorDir(m_minSize);
// the position at which we put the next child
wxPoint pt(m_position);
const wxCoord totalMinorSize = SizeInMinorDir(m_size);
int totalProportion = m_totalProportion;
for ( wxSizerItemList::const_iterator i = m_children.begin();
i != m_children.end();
++i )
@ -1681,11 +1682,15 @@ void wxBoxSizer::RecalcSizes()
// adjust the size in the major direction using the proportion
wxCoord majorSize = SizeInMajorDir(sizeThis);
if ( item->GetProportion() )
const int propItem = item->GetProportion();
if ( propItem )
{
// as at least one visible item has non-zero proportion the total
// proportion must be non zero
majorSize += (delta * item->GetProportion()) / m_totalProportion;
const int deltaItem = (delta * propItem) / totalProportion;
majorSize += deltaItem;
delta -= deltaItem;
totalProportion -= propItem;
}