// size, this worked like this in wxWidgets 2.8 and before and generally
// often makes sense for child windows (for top level ones it definitely
// does not as the user should be able to resize the window)
- if ( !wxTopLevelWindows.Find(this) ) // can't use IsTopLevel() from ctor
+ //
+ // note that we can't use IsTopLevel() from ctor
+ if ( size != wxDefaultSize && !wxTopLevelWindows.Find((wxWindow *)this) )
SetMinSize(size);
SetName(name);
// we weren't a dialog class
wxTopLevelWindows.DeleteObject((wxWindow*)this);
+ // Any additional event handlers should be popped before the window is
+ // deleted as otherwise the last handler will be left with a dangling
+ // pointer to this window result in a difficult to diagnose crash later on.
+ wxASSERT_MSG( GetEventHandler() == this,
+ wxT("any pushed event handlers must have been removed") );
+
#if wxUSE_MENUS
// The associated popup menu can still be alive, disassociate from it in
// this case
wxColour colBg = GetDefaultAttributes().colBg;
// we must return some valid colour to avoid redoing this every time
- // and also to avoid surprizing the applications written for older
+ // and also to avoid surprising the applications written for older
// wxWidgets versions where GetBackgroundColour() always returned
// something -- so give them something even if it doesn't make sense
// for this window (e.g. it has a themed background)