X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ba2a81d747036d40bb917d09c82b3562de707e99..53b9981048b3b67234bd4fa4c85fe8758eb3c21b:/src/common/appcmn.cpp diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index ff6aada11d..43bd65360c 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 @@ -78,8 +78,8 @@ wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop); wxAppBase::wxAppBase() { m_topWindow = (wxWindow *)NULL; - m_useBestVisual = FALSE; - m_isActive = TRUE; + m_useBestVisual = false; + m_isActive = true; #if wxUSE_EVTLOOP_IN_APP m_mainLoop = NULL; @@ -91,10 +91,10 @@ wxAppBase::wxAppBase() // OTOH, if we set it to No initially we'll have to overwrite it with Yes // when we enter our OnRun() because we do want the default behaviour from // then on. But this would be a problem if the user code calls - // SetExitOnFrameDelete(FALSE) from OnInit(). + // SetExitOnFrameDelete(false) from OnInit(). // // So we use the special "Later" value which is such that - // GetExitOnFrameDelete() returns FALSE for it but which we know we can + // GetExitOnFrameDelete() returns false for it but which we know we can // safely (i.e. without losing the effect of the users SetExitOnFrameDelete // call) overwrite in OnRun() m_exitOnFrameDelete = Later; @@ -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(); @@ -220,7 +230,7 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser) if ( !theme ) { wxLogError(_("Unsupported theme '%s'."), themeName.c_str()); - return FALSE; + return false; } // Delete the defaultly created theme and set the new theme. @@ -237,11 +247,11 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser) if ( wxSscanf(modeDesc.c_str(), _T("%ux%u-%u"), &w, &h, &bpp) != 3 ) { wxLogError(_("Invalid display mode specification '%s'."), modeDesc.c_str()); - return FALSE; + return false; } if ( !SetDisplayMode(wxVideoMode(w, h, bpp)) ) - return FALSE; + return false; } #endif // __WXMGL__ @@ -311,10 +321,10 @@ bool wxAppBase::OnInitGui() { #ifdef __WXUNIVERSAL__ if ( !wxTheme::Get() && !wxTheme::CreateDefault() ) - return FALSE; + return false; #endif // __WXUNIVERSAL__ - return TRUE; + return true; } int wxAppBase::OnRun() @@ -384,34 +394,34 @@ void wxAppBase::DeletePendingObjects() } } -// Returns TRUE if more time is needed. +// Returns true if more time is needed. bool wxAppBase::ProcessIdle() { wxIdleEvent event; - bool needMore = FALSE; + bool needMore = false; wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); while (node) { wxWindow* win = node->GetData(); if (SendIdleEvents(win, event)) - needMore = TRUE; + needMore = true; node = node->GetNext(); } event.SetEventObject(this); (void) ProcessEvent(event); if (event.MoreRequested()) - needMore = TRUE; + needMore = true; wxUpdateUIEvent::ResetUpdateTime(); - + return needMore; } // Send idle event to window and all subwindows bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event) { - bool needMore = FALSE; + bool needMore = false; win->OnInternalIdle(); @@ -421,14 +431,14 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event) win->GetEventHandler()->ProcessEvent(event); if (event.MoreRequested()) - needMore = TRUE; + needMore = true; } wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst(); while ( node ) { wxWindow *child = node->GetData(); if (SendIdleEvents(child, event)) - needMore = TRUE; + needMore = true; node = node->GetNext(); } @@ -588,31 +598,14 @@ void wxGUIAppTraitsBase::RemoveFromPendingDelete(wxObject *object) GSocketGUIFunctionsTable* wxGUIAppTraitsBase::GetSocketGUIFunctionsTable() { -#if defined(wxUSE_GSOCKET_CPLUSPLUS) - static GSocketGUIFunctionsTableConcrete table; - return &table; -#else #if defined(__WXMAC__) && !defined(__DARWIN__) // NB: wxMac CFM does not have any GUI-specific functions in gsocket.c and // so it doesn't need this table at all return NULL; #else // !__WXMAC__ || __DARWIN__ - static GSocketGUIFunctionsTable table = - { - _GSocket_GUI_Init, - _GSocket_GUI_Cleanup, - _GSocket_GUI_Init_Socket, - _GSocket_GUI_Destroy_Socket, -#ifndef __WINDOWS__ - _GSocket_Install_Callback, - _GSocket_Uninstall_Callback, -#endif - _GSocket_Enable_Events, - _GSocket_Disable_Events - }; + static GSocketGUIFunctionsTableConcrete table; return &table; #endif // !__WXMAC__ || __DARWIN__ -#endif // defined(wxUSE_GSOCKET_CPLUSPLUS) } #endif