X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9787a4b6ad61ad6f938c308069fabf45057af30f..4c3b4ed07f8d33e70baa4e66ca43dd0ab834578b:/src/msw/app.cpp diff --git a/src/msw/app.cpp b/src/msw/app.cpp index a0c1e2cda0..45250cfe16 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -115,8 +115,7 @@ #define _WIN32_IE 0x0200 #endif -#if _WIN32_IE >= 0x0300 \ - && !( defined(__MINGW32__) && !wxCHECK_W32API_VERSION( 1, 0 ) ) +#if _WIN32_IE >= 0x0300 && !defined(__MINGW32__) #include #endif @@ -1156,12 +1155,12 @@ bool wxApp::ProcessMessage(WXMSG *wxmsg) // we need to find the dialog containing this control as // IsDialogMessage() just eats all the messages (i.e. returns TRUE for // them) if we call it for the control itself - while ( ::GetWindowLong(hwnd, GWL_STYLE) & WS_CHILD ) + while ( hwnd && ::GetWindowLong(hwnd, GWL_STYLE) & WS_CHILD ) { hwnd = ::GetParent(hwnd); } - return ::IsDialogMessage(hwnd, msg) != 0; + return hwnd && ::IsDialogMessage(hwnd, msg) != 0; } #if wxUSE_TOOLTIPS @@ -1436,20 +1435,26 @@ void wxExit() // Yield to incoming messages -static bool gs_inYield = FALSE; - -bool wxYield() +bool wxApp::Yield(bool onlyIfNeeded) { + // MT-FIXME + static bool s_inYield = FALSE; + // disable log flushing from here because a call to wxYield() shouldn't // normally result in message boxes popping up &c wxLog::Suspend(); -#ifdef __WXDEBUG__ - if (gs_inYield) - wxFAIL_MSG( wxT("wxYield called recursively" ) ); -#endif + if ( s_inYield ) + { + if ( !onlyIfNeeded ) + { + wxFAIL_MSG( wxT("wxYield called recursively" ) ); + } - gs_inYield = TRUE; + return FALSE; + } + + s_inYield = TRUE; // we don't want to process WM_QUIT from here - it should be processed in // the main event loop in order to stop it @@ -1465,27 +1470,17 @@ bool wxYield() break; } - // If they are pending events, we must process them. - if (wxTheApp) - wxTheApp->ProcessPendingEvents(); + // if there are pending events, we must process them. + ProcessPendingEvents(); // let the logs be flashed again wxLog::Resume(); - gs_inYield = FALSE; + s_inYield = FALSE; return TRUE; } -// Yield to incoming messages; but fail silently if recursion is detected. -bool wxYieldIfNeeded() -{ - if (gs_inYield) - return FALSE; - - return wxYield(); -} - bool wxHandleFatalExceptions(bool doit) { #if wxUSE_ON_FATAL_EXCEPTION @@ -1494,9 +1489,9 @@ bool wxHandleFatalExceptions(bool doit) return TRUE; #else - wxFAIL_MSG(_T("set wxUSE_ON_FATAL_EXCEPTION to 1 to sue this function")); - - (void)doit; + wxFAIL_MSG(_T("set wxUSE_ON_FATAL_EXCEPTION to 1 to use this function")); + + (void)doit; return FALSE; #endif }