]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't crash when laying out wxGridBagSizer with only hidden elements.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 15 Sep 2013 00:14:51 +0000 (00:14 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 15 Sep 2013 00:14:51 +0000 (00:14 +0000)
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

docs/changes.txt
src/common/gbsizer.cpp

index d822b9852fb128ab4399dd09bd16b91d6226b4f4..865271b1e8f195b3626f018f1d6bf85b4ec953ed 100644 (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:
 
index 1a1dda0928651baa739a4cb7e114e84b27c9c360..88a63941752b4609669781e38383d475933d5814 100644 (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() );