This memory corruption caused me three and
a half weeks of trouble. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -711,7 +711,7 @@ wxSize wxGridSizer::CalcMin()
|
|||||||
else
|
else
|
||||||
ncols = (nitems + nrows-1) / nrows;
|
ncols = (nitems + nrows-1) / nrows;
|
||||||
|
|
||||||
/* Find the max width and height for any component */
|
// Find the max width and height for any component
|
||||||
int w = 0;
|
int w = 0;
|
||||||
int h = 0;
|
int h = 0;
|
||||||
|
|
||||||
@@ -836,20 +836,35 @@ void wxFlexGridSizer::RecalcSizes()
|
|||||||
wxSize minsz( CalcMin() );
|
wxSize minsz( CalcMin() );
|
||||||
wxPoint pt( GetPosition() );
|
wxPoint pt( GetPosition() );
|
||||||
int delta;
|
int delta;
|
||||||
size_t idx;
|
size_t idx,num;
|
||||||
|
wxArrayInt temp;
|
||||||
|
|
||||||
if ((m_growableRows.GetCount() > 0) && (sz.y > minsz.y))
|
// Transfer only those rows into temp which exist in the sizer
|
||||||
{
|
// ignoring the superflouus ones. This prevents a segfault when
|
||||||
delta = (sz.y - minsz.y) / m_growableRows.GetCount();
|
// calling AddGrowableRow( 3 ) if the sizer only has 2 rows.
|
||||||
for (idx = 0; idx < m_growableRows.GetCount(); idx++)
|
for (idx = 0; idx < m_growableRows.GetCount(); idx++)
|
||||||
m_rowHeights[ m_growableRows[idx] ] += delta;
|
if (m_growableRows[idx] < nrows)
|
||||||
|
temp.Add( m_growableRows[idx] );
|
||||||
|
num = temp.GetCount();
|
||||||
|
|
||||||
|
if ((num > 0) && (sz.y > minsz.y))
|
||||||
|
{
|
||||||
|
delta = (sz.y - minsz.y) / num;
|
||||||
|
for (idx = 0; idx < num; idx++)
|
||||||
|
m_rowHeights[ temp[idx] ] += delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_growableCols.GetCount() > 0) && (sz.x > minsz.x))
|
// See above
|
||||||
{
|
|
||||||
delta = (sz.x - minsz.x) / m_growableCols.GetCount();
|
|
||||||
for (idx = 0; idx < m_growableCols.GetCount(); idx++)
|
for (idx = 0; idx < m_growableCols.GetCount(); idx++)
|
||||||
m_colWidths[ m_growableCols[idx] ] += delta;
|
if (m_growableCols[idx] < ncols)
|
||||||
|
temp.Add( m_growableCols[idx] );
|
||||||
|
num = temp.GetCount();
|
||||||
|
|
||||||
|
if ((num > 0) && (sz.x > minsz.x))
|
||||||
|
{
|
||||||
|
delta = (sz.x - minsz.x) / num;
|
||||||
|
for (idx = 0; idx < num; idx++)
|
||||||
|
m_colWidths[ temp[idx] ] += delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
sz = wxSize( pt.x + sz.x, pt.y + sz.y );
|
sz = wxSize( pt.x + sz.x, pt.y + sz.y );
|
||||||
|
Reference in New Issue
Block a user