X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e39af974ef7846e26686ae39d74e4696c1fef0c3..73fe67bd60b57f95dc63809f7843ed2a15928436:/src/common/toplvcmn.cpp diff --git a/src/common/toplvcmn.cpp b/src/common/toplvcmn.cpp index 8768de7360..6ff702eff3 100644 --- a/src/common/toplvcmn.cpp +++ b/src/common/toplvcmn.cpp @@ -16,7 +16,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "toplevelbase.h" #endif @@ -54,6 +54,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxTopLevelWindow, wxWindow) wxTopLevelWindowBase::wxTopLevelWindowBase() { + // Unlike windows, top level windows are created hidden by default. + m_isShown = false; } wxTopLevelWindowBase::~wxTopLevelWindowBase() @@ -65,7 +67,7 @@ wxTopLevelWindowBase::~wxTopLevelWindowBase() bool shouldExit = IsLastBeforeExit(); wxTopLevelWindows.DeleteObject(this); - + if ( shouldExit ) { // then do it @@ -80,6 +82,17 @@ bool wxTopLevelWindowBase::Destroy() if ( !wxPendingDelete.Member(this) ) wxPendingDelete.Append(this); + if (wxTopLevelWindows.GetCount() > 1) + { + // Hide it immediately. This should + // not be done if this TLW is the + // only one left since we then would + // risk not to get any idle events + // at all anymore during which we + // could delete any pending events. + Hide(); + } + return TRUE; } @@ -161,7 +174,7 @@ void wxTopLevelWindowBase::OnSize(wxSizeEvent& WXUNUSED(event)) { // do we have _exactly_ one child? wxWindow *child = (wxWindow *)NULL; - for ( wxWindowList::Node *node = GetChildren().GetFirst(); + for ( wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); node; node = node->GetNext() ) {