From fb761cd53ccedec382b88e4f9c92dcae3fcdf1ea Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 16 Sep 2003 10:52:57 +0000 Subject: [PATCH] (blind) fix for wxMac compilation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/app.h | 12 +++++++++++- src/common/appcmn.cpp | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/wx/app.h b/include/wx/app.h index 3b57e36670..220c68a128 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -32,7 +32,15 @@ class WXDLLIMPEXP_BASE wxCmdLineParser; class WXDLLIMPEXP_BASE wxLog; class WXDLLIMPEXP_BASE wxMessageOutput; -class WXDLLEXPORT wxEventLoop; +// wxUSE_EVTLOOP_IN_APP is a temporary hack needed until all ports are updated +// to use wxEventLoop, otherwise we get linking errors on wxMac, it's going to +// disappear a.s.a.p. +#ifdef __WXMAC__ + #define wxUSE_EVTLOOP_IN_APP 0 +#else + #define wxUSE_EVTLOOP_IN_APP 1 + class WXDLLEXPORT wxEventLoop; +#endif // ---------------------------------------------------------------------------- // typedefs @@ -498,9 +506,11 @@ protected: virtual wxAppTraits *CreateTraits(); +#if wxUSE_EVTLOOP_IN_APP // the main event loop of the application (may be NULL if the loop hasn't // been started yet or has already terminated) wxEventLoop *m_mainLoop; +#endif // wxUSE_EVTLOOP_IN_APP // the main top level window (may be NULL) wxWindow *m_topWindow; diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index 7bb2873177..c081dc4ed8 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -97,7 +97,9 @@ wxAppBase::wxAppBase() m_useBestVisual = FALSE; m_isActive = TRUE; +#if wxUSE_EVTLOOP_IN_APP m_mainLoop = NULL; +#endif // wxUSE_EVTLOOP_IN_APP // 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 @@ -270,37 +272,51 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser) int wxAppBase::MainLoop() { +#if wxUSE_EVTLOOP_IN_APP wxTiedEventLoopPtr mainLoop(&m_mainLoop, new wxEventLoop); return m_mainLoop->Run(); +#else // !wxUSE_EVTLOOP_IN_APP + return 0; +#endif // wxUSE_EVTLOOP_IN_APP/!wxUSE_EVTLOOP_IN_APP } void wxAppBase::ExitMainLoop() { +#if wxUSE_EVTLOOP_IN_APP // we should exit from the main event loop, not just any currently active // (e.g. modal dialog) event loop if ( m_mainLoop ) { m_mainLoop->Exit(0); } +#endif // wxUSE_EVTLOOP_IN_APP } bool wxAppBase::Pending() { +#if wxUSE_EVTLOOP_IN_APP // use the currently active message loop here, not m_mainLoop, because if // we're showing a modal dialog (with its own event loop) currently the // main event loop is not running anyhow wxEventLoop * const loop = wxEventLoop::GetActive(); return loop && loop->Pending(); +#else // wxUSE_EVTLOOP_IN_APP + return false; +#endif // wxUSE_EVTLOOP_IN_APP/!wxUSE_EVTLOOP_IN_APP } bool wxAppBase::Dispatch() { +#if wxUSE_EVTLOOP_IN_APP // see comment in Pending() wxEventLoop * const loop = wxEventLoop::GetActive(); return loop ? loop->Dispatch() : true; +#else // wxUSE_EVTLOOP_IN_APP + return true; +#endif // wxUSE_EVTLOOP_IN_APP/!wxUSE_EVTLOOP_IN_APP } // ---------------------------------------------------------------------------- -- 2.47.2