diff --git a/docs/changes.txt b/docs/changes.txt index d822b9852f..865271b1e8 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -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: diff --git a/src/common/gbsizer.cpp b/src/common/gbsizer.cpp index 1a1dda0928..88a6394175 100644 --- a/src/common/gbsizer.cpp +++ b/src/common/gbsizer.cpp @@ -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() );