]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appbase.cpp
use common bottleneck
[wxWidgets.git] / src / common / appbase.cpp
index ac7d977062a77942fd5c40b09c87e7783626b500..5014ca25df9476022133b90cf18b1d36a42b9a97 100644 (file)
@@ -174,10 +174,6 @@ wxAppConsoleBase::~wxAppConsoleBase()
 
 bool wxAppConsoleBase::Initialize(int& WXUNUSED(argc), wxChar **WXUNUSED(argv))
 {
-#if wxUSE_INTL
-    GetTraits()->SetLocale();
-#endif // wxUSE_INTL
-
     return true;
 }
 
@@ -784,6 +780,18 @@ void wxAppConsoleBase::OnAssert(const wxChar *file,
     OnAssertFailure(file, line, NULL, cond, msg);
 }
 
+// ----------------------------------------------------------------------------
+// Miscellaneous other methods
+// ----------------------------------------------------------------------------
+
+void wxAppConsoleBase::SetCLocale()
+{
+    // We want to use the user locale by default in GUI applications in order
+    // to show the numbers, dates &c in the familiar format -- and also accept
+    // this format on input (especially important for decimal comma/dot).
+    wxSetlocale(LC_ALL, "");
+}
+
 // ============================================================================
 // other classes implementations
 // ============================================================================
@@ -836,26 +844,6 @@ bool wxConsoleAppTraitsBase::HasStderr()
 // wxAppTraits
 // ----------------------------------------------------------------------------
 
-#if wxUSE_INTL
-void wxAppTraitsBase::SetLocale()
-{
-    // We want to use the user locale by default in GUI applications in order
-    // to show the numbers, dates &c in the familiar format -- and also accept
-    // this format on input (especially important for decimal comma/dot).
-    wxSetlocale(LC_ALL, "");
-
-#if wxUSE_STL
-    // At least in some environments, e.g. MinGW-64, if the global C++ locale
-    // is different from the global C locale, all stream operations temporarily
-    // change the locale resulting in a huge slowdown (3 times slower in some
-    // real-life applications), so change the C++ locale to match.
-    std::locale::global(std::locale(""));
-#endif  //wxUSE_STL
-
-    wxUpdateLocaleIsUtf8();
-}
-#endif
-
 #if wxUSE_THREADS
 void wxMutexGuiEnterImpl();
 void wxMutexGuiLeaveImpl();
@@ -1031,6 +1019,8 @@ void wxAbort()
 #if wxDEBUG_LEVEL
 
 // break into the debugger
+#ifndef wxTrap
+
 void wxTrap()
 {
 #if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
@@ -1044,6 +1034,8 @@ void wxTrap()
 #endif // Win/Unix
 }
 
+#endif // wxTrap already defined as a macro
+
 // default assert handler
 static void
 wxDefaultAssertHandler(const wxString& file,
@@ -1193,6 +1185,8 @@ static void LINKAGEMODE SetTraceMasks()
 
 #if wxDEBUG_LEVEL
 
+bool wxTrapInAssert = false;
+
 static
 bool DoShowAssertDialog(const wxString& msg)
 {
@@ -1211,7 +1205,14 @@ bool DoShowAssertDialog(const wxString& msg)
                           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: