X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5283098e1316b4a811fbccaabbda71f676e86c93..d0b50ad93942338301a318eda78f7d3999a93fab:/src/msw/app.cpp?ds=inline diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 2361aa10f4..390b846cc3 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -5,8 +5,8 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // =========================================================================== @@ -65,10 +65,6 @@ WX_DEFINE_OBJARRAY(wxMsgArray); #endif // wxUSE_THREADS -#if wxUSE_WX_RESOURCES - #include "wx/resource.h" -#endif - #if wxUSE_TOOLTIPS #include "wx/tooltip.h" #endif // wxUSE_TOOLTIPS @@ -191,7 +187,7 @@ END_EVENT_TABLE() bool wxApp::Initialize() { // the first thing to do is to check if we're trying to run an Unicode - // program under Win9x w/o MSLU emulation layer - if so, abort right now + // program under Win9x w/o MSLU emulation layer - if so, abort right now // as it has no chance to work #if wxUSE_UNICODE && !wxUSE_UNICODE_MSLU if ( wxGetOsVersion() != wxWINDOWS_NT ) @@ -225,10 +221,6 @@ bool wxApp::Initialize() wxInitializeStockLists(); wxInitializeStockObjects(); -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - wxBitmap::InitStandardHandlers(); #if defined(__WIN95__) && !defined(__WXMICROWIN__) @@ -511,12 +503,6 @@ void wxApp::CleanUp() wxModule::CleanUpModules(); -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); - - // wxDefaultResourceTable->ClearTable(); -#endif - wxDeleteStockObjects(); // Destroy all GDI lists, etc. @@ -574,13 +560,14 @@ void wxApp::CleanUp() #endif delete wxWinHandleHash; + wxWinHandleHash = NULL; // Set to null in case anything later tries to ref it. - // GL: I'm annoyed ... I don't know where to put this and I don't want to - // create a module for that as it's part of the core. delete wxPendingEvents; + wxPendingEvents = NULL; // Set to null because wxAppBase::wxEvtHandler is destroyed later. #if wxUSE_THREADS delete wxPendingEventsLocker; + wxPendingEventsLocker = NULL; // Set to null because wxAppBase::wxEvtHandler is destroyed later. // If we don't do the following, we get an apparent memory leak #if wxUSE_VALIDATORS ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker(); @@ -701,8 +688,10 @@ int wxEntry(WXHINSTANCE hInstance, // we can't simply double-click on the error message and get to that // line in the source. So VC++ at least, let's have a sensible default. #ifdef __VISUALC__ +#if wxUSE_LOG wxLog::SetTimestamp(NULL); -#endif +#endif // wxUSE_LOG +#endif // __VISUALC__ // init the app int retValue = wxEntryInitGui() && wxTheApp->OnInit() ? 0 : -1; @@ -1138,33 +1127,31 @@ bool wxApp::SendIdleEvents() // Send idle event to window and all subwindows bool wxApp::SendIdleEvents(wxWindow* win) { - bool needMore = FALSE; - wxIdleEvent event; event.SetEventObject(win); win->GetEventHandler()->ProcessEvent(event); - if (event.MoreRequested()) - needMore = TRUE; + bool needMore = event.MoreRequested(); - wxNode* node = win->GetChildren().First(); - while (node) + wxWindowList::Node *node = win->GetChildren().GetFirst(); + while ( node ) { - wxWindow* win = (wxWindow*) node->Data(); + wxWindow *win = node->GetData(); if (SendIdleEvents(win)) needMore = TRUE; - node = node->Next(); + node = node->GetNext(); } + return needMore; } void wxApp::DeletePendingObjects() { - wxNode *node = wxPendingDelete.First(); + wxNode *node = wxPendingDelete.GetFirst(); while (node) { - wxObject *obj = (wxObject *)node->Data(); + wxObject *obj = node->GetData(); delete obj; @@ -1173,7 +1160,7 @@ void wxApp::DeletePendingObjects() // Deleting one object may have deleted other pending // objects, so start from beginning of list again. - node = wxPendingDelete.First(); + node = wxPendingDelete.GetFirst(); } } @@ -1287,10 +1274,15 @@ int wxApp::GetComCtl32Version() void wxExit() { - wxLogError(_("Fatal error: exiting")); - - wxApp::CleanUp(); - exit(0); + if ( wxTheApp ) + { + wxTheApp->ExitMainLoop(); + } + else + { + // what else can we do? + exit(-1); + } } // Yield to incoming messages @@ -1300,9 +1292,11 @@ bool wxApp::Yield(bool onlyIfNeeded) // MT-FIXME static bool s_inYield = FALSE; +#if wxUSE_LOG // disable log flushing from here because a call to wxYield() shouldn't // normally result in message boxes popping up &c wxLog::Suspend(); +#endif // wxUSE_LOG if ( s_inYield ) { @@ -1333,8 +1327,10 @@ bool wxApp::Yield(bool onlyIfNeeded) // if there are pending events, we must process them. ProcessPendingEvents(); +#if wxUSE_LOG // let the logs be flashed again wxLog::Resume(); +#endif // wxUSE_LOG s_inYield = FALSE;