X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4629016dfb6b082542523aa70b3beff197a2d139..aaf1bbfd62a0297da30d2ac01f6e30592a3d11e0:/src/common/appcmn.cpp?ds=inline diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index 335d9ec82b..4b5a93d453 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -47,7 +47,7 @@ #include "wx/utils.h" #include "wx/ptr_scpd.h" -#if defined(__WXMSW__) +#if defined(__WXMSW__) && !defined(__PALMOS__) #include "wx/msw/private.h" // includes windows.h for LOGFONT #endif @@ -128,9 +128,19 @@ wxAppBase::~wxAppBase() void wxAppBase::CleanUp() { - // one last chance for pending objects to be cleaned up + // clean up all the pending objects DeletePendingObjects(); + // and any remaining TLWs (they remove themselves from wxTopLevelWindows + // when destroyed, so iterate until none are left) + while ( !wxTopLevelWindows.empty() ) + { + // do not use Destroy() here as it only puts the TLW in pending list + // but we want to delete them now + delete wxTopLevelWindows.GetFirst()->GetData(); + } + + // undo everything we did in Initialize() above wxBitmap::CleanUpHandlers(); wxDeleteStockObjects();