]> git.saurik.com Git - wxWidgets.git/commitdiff
wxMac linking fix
authorVáclav Slavík <vslavik@fastmail.fm>
Thu, 22 Dec 2005 23:04:05 +0000 (23:04 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Thu, 22 Dec 2005 23:04:05 +0000 (23:04 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/appcmn.cpp

index 1e30f70f15ff17234d7091998bdf57f64ba8cac9..cae703305667acb9e1bef4b1dec842b2051ae8c3 100644 (file)
@@ -42,6 +42,7 @@
 #include "wx/thread.h"
 #include "wx/utils.h"
 #include "wx/ptr_scpd.h"
 #include "wx/thread.h"
 #include "wx/utils.h"
 #include "wx/ptr_scpd.h"
+#include "wx/evtloop.h"
 
 #if defined(__WXMSW__)
     #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
 
 #if defined(__WXMSW__)
     #include  "wx/msw/private.h"  // includes windows.h for LOGFONT
@@ -61,7 +62,9 @@ WX_CHECK_BUILD_OPTIONS("wxCore")
 // ----------------------------------------------------------------------------
 
 // this defines wxEventLoopPtr
 // ----------------------------------------------------------------------------
 
 // this defines wxEventLoopPtr
+#if wxUSE_EVTLOOP_IN_APP
 wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
 wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
+#endif
 
 // ============================================================================
 // wxAppBase implementation
 
 // ============================================================================
 // wxAppBase implementation
@@ -463,6 +466,39 @@ void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event))
 
 }
 
 
 }
 
+// ----------------------------------------------------------------------------
+// exception handling
+// ----------------------------------------------------------------------------
+
+#if wxUSE_EXCEPTIONS
+
+void wxAppBase::HandleEvent(wxEvtHandler *handler,
+                            wxEventFunction func,
+                            wxEvent& event) const
+{
+    // by default, call wxApp::OnExceptionInMainLoop if an exception occurs
+    try
+    {
+        handler->DoHandleEvent(func, event);
+    }
+    catch ( ... )
+    {
+        if ( !wxConstCast(this, wxAppBase)->OnExceptionInMainLoop() )
+        {
+#if wxUSE_EVTLOOP_IN_APP
+            wxEventLoop *loop = wxEventLoop::GetActive();
+            if ( loop )
+                loop->Exit(-1);
+#else
+            wxConstCast(this, wxAppBase)->ExitMainLoop();
+#endif
+        }
+        //else: continue running the event loop
+    }
+}
+
+#endif // wxUSE_EXCEPTIONS
+
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------