X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14eb37a05eb3741f4c8d9e64b7af45480706cb15..423939b29aab373e5da156c857265d7a5604f613:/src/common/appcmn.cpp diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index af5a1d8ece..82fdabf78e 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -40,6 +40,7 @@ #include "wx/msgout.h" #include "wx/thread.h" #include "wx/vidmode.h" +#include "wx/evtloop.h" #ifdef __WXDEBUG__ #if wxUSE_STACKWALKER @@ -71,15 +72,13 @@ WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete; wxAppBase::wxAppBase() { - m_topWindow = (wxWindow *)NULL; + m_topWindow = NULL; m_useBestVisual = false; m_forceTrueColour = false; m_isActive = true; - m_isInsideYield = false; - // We don't want to exit the app if the user code shows a dialog from its // OnInit() -- but this is what would happen if we set m_exitOnFrameDelete // to Yes initially as this dialog would be the last top level window. @@ -104,6 +103,10 @@ bool wxAppBase::Initialize(int& argcOrig, wxChar **argvOrig) wxBitmap::InitStandardHandlers(); + // for compatibility call the old initialization function too + if ( !OnInitGui() ) + return false; + return true; } @@ -325,6 +328,25 @@ void wxAppBase::SetActive(bool active, wxWindow * WXUNUSED(lastFocus)) (void)ProcessEvent(event); } +bool wxAppBase::SafeYield(wxWindow *win, bool onlyIfNeeded) +{ + wxWindowDisabler wd(win); + + wxEventLoopBase * const loop = wxEventLoopBase::GetActive(); + + return loop && loop->Yield(onlyIfNeeded); +} + +bool wxAppBase::SafeYieldFor(wxWindow *win, long eventsToProcess) +{ + wxWindowDisabler wd(win); + + wxEventLoopBase * const loop = wxEventLoopBase::GetActive(); + + return loop && loop->YieldFor(eventsToProcess); +} + + // ---------------------------------------------------------------------------- // idle handling // ----------------------------------------------------------------------------