Don't crash when laying out wxGridBagSizer with only hidden elements.

wxGridBagSizer lay out algorithm needs at least a single row and a single
column to work, so simply don't run it at all if there is nothing to lay out.

Closes #15475.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74810 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2013-09-15 00:14:51 +00:00
parent be1c0bc6ba
commit 4de25822f3
2 changed files with 6 additions and 1 deletions

View File

@@ -576,6 +576,7 @@ All (GUI):
- Add wxPropertyGridPageState::GetColumnFullWidth() (Teodor Petrov).
- wxRTC: extracted XML utilities into a separate class for potential reuse.
- wxPropertyGrid: improve composite flags handling (Jens Lody).
- Don't crash laying out wxGridBagSizer with only hidden elements (briceandre).
wxGTK:

View File

@@ -505,7 +505,11 @@ wxSize wxGridBagSizer::CalcMin()
void wxGridBagSizer::RecalcSizes()
{
if (m_children.GetCount() == 0)
// We can't lay out our elements if we don't have at least a single row and
// a single column. Notice that this may happen even if we have some
// children but all of them are hidden, so checking for m_children being
// non-empty is not enough, see #15475.
if ( m_rowHeights.empty() || m_colWidths.empty() )
return;
wxPoint pt( GetPosition() );