]> git.saurik.com Git - wxWidgets.git/commitdiff
moved OnExceptionInMainLoop() from wxAppConsole to wxAppBase because
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 9 Jan 2006 00:12:49 +0000 (00:12 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 9 Jan 2006 00:12:49 +0000 (00:12 +0000)
1. console apps have no main loop
2. in non-monolithic mingw32 build, rethrowing an exception thrown from the
   GUI in the base DLL doesn't work

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/app.h
src/common/appbase.cpp
src/common/appcmn.cpp

index 399654314558ff123d27acf88c717da7607484e8..38878cf44d24a368c03f28cab79cb65e2f4bb053 100644 (file)
@@ -116,20 +116,6 @@ public:
     // crash.
     virtual void OnFatalException() { }
 
     // crash.
     virtual void OnFatalException() { }
 
-#if wxUSE_EXCEPTIONS
-    // function called if an uncaught exception is caught inside the main
-    // event loop: it may return true to continue running the event loop or
-    // false to stop it (in the latter case it may rethrow the exception as
-    // well)
-    virtual bool OnExceptionInMainLoop();
-
-    // Called when an unhandled C++ exception occurs inside OnRun(): note that
-    // the exception type is lost by now, so if you really want to handle the
-    // exception you should override OnRun() and put a try/catch around
-    // MainLoop() call there
-    virtual void OnUnhandledException() { }
-#endif // wxUSE_EXCEPTIONS
-
     // Called from wxExit() function, should terminate the application a.s.a.p.
     virtual void Exit();
 
     // Called from wxExit() function, should terminate the application a.s.a.p.
     virtual void Exit();
 
@@ -237,6 +223,12 @@ public:
     virtual void HandleEvent(wxEvtHandler *handler,
                              wxEventFunction func,
                              wxEvent& event) const;
     virtual void HandleEvent(wxEvtHandler *handler,
                              wxEventFunction func,
                              wxEvent& event) const;
+
+    // Called when an unhandled C++ exception occurs inside OnRun(): note that
+    // the exception type is lost by now, so if you really want to handle the
+    // exception you should override OnRun() and put a try/catch around
+    // MainLoop() call there or use OnExceptionInMainLoop()
+    virtual void OnUnhandledException() { }
 #endif // wxUSE_EXCEPTIONS
 
     // process all events in the wxPendingEvents list -- it is necessary to
 #endif // wxUSE_EXCEPTIONS
 
     // process all events in the wxPendingEvents list -- it is necessary to
@@ -430,8 +422,14 @@ public:
         // Returns true if more idle time is requested.
     virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event);
 
         // Returns true if more idle time is requested.
     virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event);
 
-        // Perform standard OnIdle behaviour: call from port's OnIdle
-    void OnIdle(wxIdleEvent& event);
+
+#if wxUSE_EXCEPTIONS
+    // Function called if an uncaught exception is caught inside the main
+    // event loop: it may return true to continue running the event loop or
+    // false to stop it (in the latter case it may rethrow the exception as
+    // well)
+    virtual bool OnExceptionInMainLoop();
+#endif // wxUSE_EXCEPTIONS
 
 
     // top level window functions
 
 
     // top level window functions
@@ -511,6 +509,9 @@ public:
     // returns true if the program is successfully initialized
     bool Initialized() { return true; }
 
     // returns true if the program is successfully initialized
     bool Initialized() { return true; }
 
+    // perform standard OnIdle behaviour, ensure that this is always called
+    void OnIdle(wxIdleEvent& event);
+
 
 protected:
     // delete all objects in wxPendingDelete list
 
 protected:
     // delete all objects in wxPendingDelete list
index 663e7ea67063d7c5064f7bc9ffe2fa7003b7f974..fd408ab0d95aee5ac8c709687e25a03a0d68aa69 100644 (file)
@@ -320,17 +320,6 @@ wxAppConsole::HandleEvent(wxEvtHandler *handler,
     (handler->*func)(event);
 }
 
     (handler->*func)(event);
 }
 
-bool
-wxAppConsole::OnExceptionInMainLoop()
-{
-    throw;
-
-    // some compilers are too stupid to know that we never return after throw
-#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
-    return false;
-#endif
-}
-
 #endif // wxUSE_EXCEPTIONS
 
 // ----------------------------------------------------------------------------
 #endif // wxUSE_EXCEPTIONS
 
 // ----------------------------------------------------------------------------
index 1e30f70f15ff17234d7091998bdf57f64ba8cac9..e19c11697a72980524581c7a0ed2d7b7a7dfa133 100644 (file)
@@ -372,6 +372,10 @@ void wxAppBase::SetActive(bool active, wxWindow * WXUNUSED(lastFocus))
     (void)ProcessEvent(event);
 }
 
     (void)ProcessEvent(event);
 }
 
+// ----------------------------------------------------------------------------
+// idle handling
+// ----------------------------------------------------------------------------
+
 void wxAppBase::DeletePendingObjects()
 {
     wxList::compatibility_iterator node = wxPendingDelete.GetFirst();
 void wxAppBase::DeletePendingObjects()
 {
     wxList::compatibility_iterator node = wxPendingDelete.GetFirst();
@@ -463,6 +467,24 @@ void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event))
 
 }
 
 
 }
 
+// ----------------------------------------------------------------------------
+// exceptions support
+// ----------------------------------------------------------------------------
+
+#if wxUSE_EXCEPTIONS
+
+bool wxAppBase::OnExceptionInMainLoop()
+{
+    throw;
+
+    // some compilers are too stupid to know that we never return after throw
+#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
+    return false;
+#endif
+}
+
+#endif // wxUSE_EXCEPTIONS
+
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------