X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3a919bdcef1691d993419fdad6370289d0339b8..e570a44b372cf56526c128eab646615fa59520fc:/src/os2/evtloop.cpp diff --git a/src/os2/evtloop.cpp b/src/os2/evtloop.cpp index 143a0a2ca6..e558aaefeb 100644 --- a/src/os2/evtloop.cpp +++ b/src/os2/evtloop.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: os2/evtloop.cpp +// Name: src/os2/evtloop.cpp // Purpose: implements wxEventLoop for PM // Author: Vadim Zeitlin // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "evtloop.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -32,10 +28,10 @@ #include "wx/window.h" #include "wx/app.h" #include "wx/timer.h" + #include "wx/log.h" #endif //WX_PRECOMP #include "wx/evtloop.h" -#include "wx/log.h" #include "wx/tooltip.h" #include "wx/ptr_scpd.h" @@ -87,30 +83,6 @@ private: wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoopImpl); -// this object sets the wxEventLoop given to the ctor as the currently active -// one and unsets it in its dtor -class wxEventLoopActivator -{ -public: - wxEventLoopActivator(wxEventLoop **pActive, - wxEventLoop *evtLoop) - { - m_pActive = pActive; - m_evtLoopOld = *pActive; - *pActive = evtLoop; - } - - ~wxEventLoopActivator() - { - // restore the previously active event loop - *m_pActive = m_evtLoopOld; - } - -private: - wxEventLoop *m_evtLoopOld; - wxEventLoop **m_pActive; -}; - // ============================================================================ // wxEventLoopImpl implementation // ============================================================================ @@ -192,11 +164,11 @@ bool wxEventLoopImpl::PreProcessMessage(QMSG *pMsg) { if((bRc = pWnd->OS2TranslateMessage((WXMSG*)pMsg)) == TRUE) break; - // stop at first top level window, i.e. don't try to process the - // key strokes originating in a dialog using the accelerators of - // the parent frame - this doesn't make much sense - if ( pWnd->IsTopLevel() ) - break; + // stop at first top level window, i.e. don't try to process the + // key strokes originating in a dialog using the accelerators of + // the parent frame - this doesn't make much sense + if ( pWnd->IsTopLevel() ) + break; } if(!bRc) // untranslated, should restore original value @@ -227,8 +199,6 @@ bool wxEventLoopImpl::SendIdleMessage() // wxEventLoop implementation // ============================================================================ -wxEventLoop *wxEventLoop::ms_activeLoop = NULL; - // ---------------------------------------------------------------------------- // wxEventLoop running and exiting // ---------------------------------------------------------------------------- @@ -238,11 +208,6 @@ wxEventLoop::~wxEventLoop() wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") ); } -bool wxEventLoop::IsRunning() const -{ - return m_impl != NULL; -} - ////////////////////////////////////////////////////////////////////////////// // // Keep trying to process messages until WM_QUIT @@ -280,7 +245,7 @@ int wxEventLoop::Run() // SendIdleMessage() and Dispatch() below may throw so the code here should // be exception-safe, hence we must use local objects for all actions we // should undo - wxEventLoopActivator activate(&ms_activeLoop, this); + wxEventLoopActivator activate(this); wxEventLoopImplTiedPtr impl(&m_impl, new wxEventLoopImpl); CallEventLoopMethod callOnExit(this, &wxEventLoop::OnExit); @@ -294,24 +259,26 @@ int wxEventLoop::Run() // generate and process idle events for as long as we don't have // anything else to do while ( !Pending() && m_impl->SendIdleMessage() ) - { - wxTheApp->HandleSockets(); - wxMilliSleep(10); - } + { + wxTheApp->HandleSockets(); + wxMilliSleep(10); + } wxTheApp->HandleSockets(); if (Pending()) - { - if ( !Dispatch() ) - { - // we got WM_QUIT - break; - } - } + { + if ( !Dispatch() ) + { + // we got WM_QUIT + break; + } + } else wxMilliSleep(10); } + OnExit(); + return m_impl->GetExitCode(); } @@ -336,7 +303,7 @@ bool wxEventLoop::Pending() const bool wxEventLoop::Dispatch() { - wxCHECK_MSG( IsRunning(), FALSE, _T("can't call Dispatch() if not running") ); + wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") ); QMSG msg; BOOL bRc = ::WinGetMsg(vHabmain, &msg, (HWND) NULL, 0, 0); @@ -344,14 +311,14 @@ bool wxEventLoop::Dispatch() if ( bRc == 0 ) { // got WM_QUIT - return FALSE; + return false; } #if wxUSE_THREADS wxASSERT_MSG( wxThread::IsMain(), wxT("only the main thread can process Windows messages") ); - static bool s_hadGuiLock = TRUE; + static bool s_hadGuiLock = true; static wxMsgArray s_aSavedMessages; // if a secondary thread owning the mutex is doing GUI calls, save all @@ -359,7 +326,7 @@ bool wxEventLoop::Dispatch() // it will lead to recursive library calls (and we're not reentrant) if ( !wxGuiOwnedByMainThread() ) { - s_hadGuiLock = FALSE; + s_hadGuiLock = false; // leave out WM_COMMAND messages: too dangerous, sometimes // the message will be processed twice @@ -368,7 +335,7 @@ bool wxEventLoop::Dispatch() s_aSavedMessages.Add(msg); } - return TRUE; + return true; } else { @@ -379,7 +346,7 @@ bool wxEventLoop::Dispatch() // messages normally - expect some things to break... if ( !s_hadGuiLock ) { - s_hadGuiLock = TRUE; + s_hadGuiLock = true; size_t count = s_aSavedMessages.Count(); for ( size_t n = 0; n < count; n++ ) @@ -395,6 +362,5 @@ bool wxEventLoop::Dispatch() m_impl->ProcessMessage(&msg); - return TRUE; + return true; } -