]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appbase.cpp
skip apple options
[wxWidgets.git] / src / common / appbase.cpp
index 6f2caafc55432575d88e1c5e507b135d07c8be56..dba66974cb71f2045cb856836f2c69b26fd6ebe9 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     19.06.2003 (extracted from common/appcmn.cpp)
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     19.06.2003 (extracted from common/appcmn.cpp)
-// RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -256,6 +255,10 @@ int wxAppConsoleBase::OnRun()
     return MainLoop();
 }
 
     return MainLoop();
 }
 
+void wxAppConsoleBase::OnLaunched()
+{    
+}
+
 int wxAppConsoleBase::OnExit()
 {
 #if wxUSE_CONFIG
 int wxAppConsoleBase::OnExit()
 {
 #if wxUSE_CONFIG
@@ -304,6 +307,15 @@ wxAppTraits *wxAppConsoleBase::GetTraitsIfExists()
     return app ? app->GetTraits() : NULL;
 }
 
     return app ? app->GetTraits() : NULL;
 }
 
+/* static */
+wxAppTraits& wxAppConsoleBase::GetValidTraits()
+{
+    static wxConsoleAppTraits s_traitsConsole;
+    wxAppTraits* const traits = wxTheApp ? wxTheApp->GetTraits() : NULL;
+
+    return traits ? *traits : s_traitsConsole;
+}
+
 // ----------------------------------------------------------------------------
 // wxEventLoop redirection
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxEventLoop redirection
 // ----------------------------------------------------------------------------
@@ -312,6 +324,13 @@ int wxAppConsoleBase::MainLoop()
 {
     wxEventLoopBaseTiedPtr mainLoop(&m_mainLoop, CreateMainLoop());
 
 {
     wxEventLoopBaseTiedPtr mainLoop(&m_mainLoop, CreateMainLoop());
 
+#if defined(__WXOSX__) && wxOSX_USE_COCOA_OR_IPHONE
+    // OnLaunched called from native app controller
+#else
+    if (wxTheApp)
+        wxTheApp->OnLaunched();
+#endif
+    
     return m_mainLoop ? m_mainLoop->Run() : -1;
 }
 
     return m_mainLoop ? m_mainLoop->Run() : -1;
 }
 
@@ -1019,6 +1038,8 @@ void wxAbort()
 #if wxDEBUG_LEVEL
 
 // break into the debugger
 #if wxDEBUG_LEVEL
 
 // break into the debugger
+#ifndef wxTrap
+
 void wxTrap()
 {
 #if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
 void wxTrap()
 {
 #if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
@@ -1032,6 +1053,8 @@ void wxTrap()
 #endif // Win/Unix
 }
 
 #endif // Win/Unix
 }
 
+#endif // wxTrap already defined as a macro
+
 // default assert handler
 static void
 wxDefaultAssertHandler(const wxString& file,
 // default assert handler
 static void
 wxDefaultAssertHandler(const wxString& file,
@@ -1181,6 +1204,8 @@ static void LINKAGEMODE SetTraceMasks()
 
 #if wxDEBUG_LEVEL
 
 
 #if wxDEBUG_LEVEL
 
+bool wxTrapInAssert = false;
+
 static
 bool DoShowAssertDialog(const wxString& msg)
 {
 static
 bool DoShowAssertDialog(const wxString& msg)
 {
@@ -1199,7 +1224,14 @@ bool DoShowAssertDialog(const wxString& msg)
                           MB_YESNOCANCEL | MB_ICONSTOP ) )
     {
         case IDYES:
                           MB_YESNOCANCEL | MB_ICONSTOP ) )
     {
         case IDYES:
-            wxTrap();
+            // If we called wxTrap() directly from here, the programmer would
+            // see this function and a few more calls between his own code and
+            // it in the stack trace which would be perfectly useless and often
+            // confusing. So instead just set the flag here and let the macros
+            // defined in wx/debug.h call wxTrap() themselves, this ensures
+            // that the debugger will show the line in the user code containing
+            // the failing assert.
+            wxTrapInAssert = true;
             break;
 
         case IDCANCEL:
             break;
 
         case IDCANCEL: