From 76be36e401a4a8b6d2ef1dfc13325adcb3d81073 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 5 Aug 2008 22:47:11 +0000 Subject: [PATCH] fix an assert failure when a child TLW was created and destroyed while the parent window was frozen git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/wincmn.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index b9942fa0a8..8ce661082e 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -1007,7 +1007,7 @@ void wxWindowBase::AddChild(wxWindowBase *child) GetChildren().Append((wxWindow*)child); child->SetParent(this); - // adding a child while frozen will assert when thawn, so freeze it as if + // adding a child while frozen will assert when thawed, so freeze it as if // it had been already present when we were frozen if ( IsFrozen() && !child->IsTopLevel() ) child->Freeze(); @@ -1019,7 +1019,10 @@ void wxWindowBase::RemoveChild(wxWindowBase *child) // removing a child while frozen may result in permanently frozen window // if used e.g. from Reparent(), so thaw it - if ( IsFrozen() && !child->IsTopLevel() ) + // + // NB: IsTopLevel() doesn't return true any more when a TLW child is being + // removed from its ~wxWindowBase, so check for IsBeingDeleted() too + if ( IsFrozen() && !child->IsBeingDeleted() && !child->IsTopLevel() ) child->Thaw(); GetChildren().DeleteObject((wxWindow *)child); -- 2.50.0