projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Include wx/intl.h according to precompiled headers of wx/wx.h (with other minor clean...
[wxWidgets.git]
/
src
/
common
/
appbase.cpp
diff --git
a/src/common/appbase.cpp
b/src/common/appbase.cpp
index c0af2ac2564d6427b09314cf8aef2401184eaf22..efc2c45cbdd055868d09595d805eeff3bbf23ebe 100644
(file)
--- a/
src/common/appbase.cpp
+++ b/
src/common/appbase.cpp
@@
-1,5
+1,5
@@
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-// Name:
common/base
/appbase.cpp
+// Name:
src/common
/appbase.cpp
// Purpose: implements wxAppConsole class
// Author: Vadim Zeitlin
// Modified by:
// Purpose: implements wxAppConsole class
// Author: Vadim Zeitlin
// Modified by:
@@
-25,9
+25,9
@@
#endif
#ifndef WX_PRECOMP
#endif
#ifndef WX_PRECOMP
+ #include "wx/list.h"
#include "wx/app.h"
#include "wx/intl.h"
#include "wx/app.h"
#include "wx/intl.h"
- #include "wx/list.h"
#include "wx/log.h"
#endif //WX_PRECOMP
#include "wx/log.h"
#endif //WX_PRECOMP
@@
-57,11
+57,8
@@
#endif
#if defined(__WXMAC__)
#endif
#if defined(__WXMAC__)
- // VZ: MacTypes.h is enough under Mac OS X (where I could test it) but
- // I don't know which headers are needed under earlier systems so
- // include everything when in doubt
#ifdef __DARWIN__
#ifdef __DARWIN__
- #include
"MacTypes.h"
+ #include
<CoreServices/CoreServices.h>
#else
#include "wx/mac/private.h" // includes mac headers
#endif
#else
#include "wx/mac/private.h" // includes mac headers
#endif
@@
-96,6
+93,7
@@
static
void ShowAssertDialog(const wxChar *szFile,
int nLine,
static
void ShowAssertDialog(const wxChar *szFile,
int nLine,
+ const wxChar *szFunc,
const wxChar *szCond,
const wxChar *szMsg,
wxAppTraits *traits = NULL);
const wxChar *szCond,
const wxChar *szMsg,
wxAppTraits *traits = NULL);
@@
-147,11
+145,11
@@
wxAppConsole::~wxAppConsole()
// initilization/cleanup
// ----------------------------------------------------------------------------
// initilization/cleanup
// ----------------------------------------------------------------------------
-bool wxAppConsole::Initialize(int& argc
, wxChar **argv
)
+bool wxAppConsole::Initialize(int& argc
Orig, wxChar **argvOrig
)
{
// remember the command line arguments
{
// remember the command line arguments
-
this->argc = argc
;
-
this->argv = argv
;
+
argc = argcOrig
;
+
argv = argvOrig
;
#ifndef __WXPALMOS__
if ( m_appName.empty() && argv )
#ifndef __WXPALMOS__
if ( m_appName.empty() && argv )
@@
-210,10
+208,6
@@
int wxAppConsole::OnExit()
delete wxConfigBase::Set((wxConfigBase *) NULL);
#endif // wxUSE_CONFIG
delete wxConfigBase::Set((wxConfigBase *) NULL);
#endif // wxUSE_CONFIG
- // use Set(NULL) and not Get() to avoid creating a message output object on
- // demand when we just want to delete it
- delete wxMessageOutput::Set(NULL);
-
return 0;
}
return 0;
}
@@
-275,7
+269,7
@@
void wxAppConsole::ProcessPendingEvents()
if ( !wxPendingEventsLocker )
return;
#endif
if ( !wxPendingEventsLocker )
return;
#endif
-
+
// ensure that we're the only thread to modify the pending events list
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
// ensure that we're the only thread to modify the pending events list
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
@@
-295,7
+289,7
@@
void wxAppConsole::ProcessPendingEvents()
// In ProcessPendingEvents(), new handlers might be add
// and we can safely leave the critical section here.
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
// In ProcessPendingEvents(), new handlers might be add
// and we can safely leave the critical section here.
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
-
+
handler->ProcessPendingEvents();
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
handler->ProcessPendingEvents();
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
@@
-327,17
+321,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
// ----------------------------------------------------------------------------
@@
-452,12
+435,21
@@
bool wxAppConsole::CheckBuildOptions(const char *optionsSignature,
#ifdef __WXDEBUG__
#ifdef __WXDEBUG__
+void wxAppConsole::OnAssertFailure(const wxChar *file,
+ int line,
+ const wxChar *func,
+ const wxChar *cond,
+ const wxChar *msg)
+{
+ ShowAssertDialog(file, line, func, cond, msg, GetTraits());
+}
+
void wxAppConsole::OnAssert(const wxChar *file,
int line,
const wxChar *cond,
const wxChar *msg)
{
void wxAppConsole::OnAssert(const wxChar *file,
int line,
const wxChar *cond,
const wxChar *msg)
{
-
ShowAssertDialog(file, line, cond, msg, GetTraits()
);
+
OnAssertFailure(file, line, NULL, cond, msg
);
}
#endif // __WXDEBUG__
}
#endif // __WXDEBUG__
@@
-605,19
+597,10
@@
void wxTrap()
#endif // Win/Unix
}
#endif // Win/Unix
}
-void wxAssert(int cond,
- const wxChar *szFile,
- int nLine,
- const wxChar *szCond,
- const wxChar *szMsg)
-{
- if ( !cond )
- wxOnAssert(szFile, nLine, szCond, szMsg);
-}
-
// this function is called when an assert fails
void wxOnAssert(const wxChar *szFile,
int nLine,
// this function is called when an assert fails
void wxOnAssert(const wxChar *szFile,
int nLine,
+ const char *szFunc,
const wxChar *szCond,
const wxChar *szMsg)
{
const wxChar *szCond,
const wxChar *szMsg)
{
@@
-636,16
+619,19
@@
void wxOnAssert(const wxChar *szFile,
s_bInAssert = true;
s_bInAssert = true;
+ // __FUNCTION__ is always in ASCII, convert it to wide char if needed
+ const wxString strFunc = wxString::FromAscii(szFunc);
+
if ( !wxTheApp )
{
// by default, show the assert dialog box -- we can't customize this
// behaviour
if ( !wxTheApp )
{
// by default, show the assert dialog box -- we can't customize this
// behaviour
- ShowAssertDialog(szFile, nLine, szCond, szMsg);
+ ShowAssertDialog(szFile, nLine, s
trFunc, s
zCond, szMsg);
}
else
{
// let the app process it as it wants
}
else
{
// let the app process it as it wants
- wxTheApp->OnAssert
(szFile, nLine
, szCond, szMsg);
+ wxTheApp->OnAssert
Failure(szFile, nLine, strFunc
, szCond, szMsg);
}
s_bInAssert = false;
}
s_bInAssert = false;
@@
-714,12
+700,6
@@
static wxString GetAssertStackTrace()
{
wxString stackTrace;
{
wxString stackTrace;
-#if wxUSE_DBGHELP
- // check that we can get the stack trace before trying to do it
- if ( !wxDbgHelpDLL::Init() )
- return stackTrace;
-#endif
-
class StackDump : public wxStackWalker
{
public:
class StackDump : public wxStackWalker
{
public:
@@
-730,7
+710,11
@@
static wxString GetAssertStackTrace()
protected:
virtual void OnStackFrame(const wxStackFrame& frame)
{
protected:
virtual void OnStackFrame(const wxStackFrame& frame)
{
- m_stackTrace << wxString::Format(_T("[%02d] "), frame.GetLevel());
+ m_stackTrace << wxString::Format
+ (
+ _T("[%02d] "),
+ wx_truncate_cast(int, frame.GetLevel())
+ );
wxString name = frame.GetName();
if ( !name.empty() )
wxString name = frame.GetName();
if ( !name.empty() )
@@
-739,11
+723,7
@@
static wxString GetAssertStackTrace()
}
else
{
}
else
{
- m_stackTrace << wxString::Format
- (
- _T("0x%08lx"),
- (unsigned long)frame.GetAddress()
- );
+ m_stackTrace << wxString::Format(_T("%p"), frame.GetAddress());
}
if ( frame.HasSourceLocation() )
}
if ( frame.HasSourceLocation() )
@@
-762,7
+742,7
@@
static wxString GetAssertStackTrace()
};
StackDump dump;
};
StackDump dump;
- dump.Walk(
5
); // don't show OnAssert() call itself
+ dump.Walk(
2
); // don't show OnAssert() call itself
stackTrace = dump.GetStackTrace();
// don't show more than maxLines or we could get a dialog too tall to be
stackTrace = dump.GetStackTrace();
// don't show more than maxLines or we could get a dialog too tall to be
@@
-781,6
+761,7
@@
static wxString GetAssertStackTrace()
static
void ShowAssertDialog(const wxChar *szFile,
int nLine,
static
void ShowAssertDialog(const wxChar *szFile,
int nLine,
+ const wxChar *szFunc,
const wxChar *szCond,
const wxChar *szMsg,
wxAppTraits *traits)
const wxChar *szCond,
const wxChar *szMsg,
wxAppTraits *traits)
@@
-796,6
+777,11
@@
void ShowAssertDialog(const wxChar *szFile,
// the failed assert
msg.Printf(wxT("%s(%d): assert \"%s\" failed"), szFile, nLine, szCond);
// the failed assert
msg.Printf(wxT("%s(%d): assert \"%s\" failed"), szFile, nLine, szCond);
+ // add the function name, if any
+ if ( szFunc && *szFunc )
+ msg << _T(" in ") << szFunc << _T("()");
+
+ // and the message itself
if ( szMsg )
{
msg << _T(": ") << szMsg;
if ( szMsg )
{
msg << _T(": ") << szMsg;
@@
-853,4
+839,3
@@
void ShowAssertDialog(const wxChar *szFile,
}
#endif // __WXDEBUG__
}
#endif // __WXDEBUG__
-