X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/27fc802d5c31d4b1e1d5e2d38db9338e2d09bdea..fc54776e31f04962739980d6cdcc894bb87a9c53:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 30b8258870..8f7ebe11fd 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -258,6 +258,8 @@ wxLog *wxLog::GetActiveTarget() ms_pLogger = wxTheApp->CreateLogTarget(); #endif + s_bInGetActiveTarget = FALSE; + // do nothing if it fails - what can we do? } } @@ -265,15 +267,17 @@ wxLog *wxLog::GetActiveTarget() return ms_pLogger; } -wxLog *wxLog::SetActiveTarget(wxLog *pLogger, bool bNoFlashOld) +wxLog *wxLog::SetActiveTarget(wxLog *pLogger) { - // flush the old messages before changing - if ( (ms_pLogger != NULL) && !bNoFlashOld ) { + if ( ms_pLogger != NULL ) { + // flush the old messages before changing because otherwise they might + // get lost later if this target is not restored ms_pLogger->Flush(); } wxLog *pOldLogger = ms_pLogger; ms_pLogger = pLogger; + return pOldLogger; } @@ -387,6 +391,7 @@ void wxLogStream::DoLogString(const char *szString) (*m_ostr) << szString << endl << flush; } +#ifndef wxUSE_NOGUI // ---------------------------------------------------------------------------- // wxLogTextCtrl implementation // ---------------------------------------------------------------------------- @@ -410,8 +415,6 @@ wxLogTextCtrl::~wxLogTextCtrl() // wxLogGui implementation // ---------------------------------------------------------------------------- -#ifndef wxUSE_NOGUI - wxLogGui::wxLogGui() { m_bErrors = FALSE; @@ -780,8 +783,7 @@ void wxLogWindow::DoLogString(const char *szString) pText->WriteText(szString); pText->WriteText("\n"); // "\n" ok here (_not_ "\r\n") - // ensure that the line can be seen - // @@@ TODO + // TODO ensure that the line can be seen } wxFrame *wxLogWindow::GetFrame() const @@ -795,11 +797,13 @@ void wxLogWindow::OnFrameCreate(wxFrame *WXUNUSED(frame)) void wxLogWindow::OnFrameDelete(wxFrame *WXUNUSED(frame)) { - m_pLogFrame = (wxLogFrame *) NULL; + m_pLogFrame = (wxLogFrame *)NULL; } wxLogWindow::~wxLogWindow() { + delete m_pOldLog; + // may be NULL if log frame already auto destroyed itself delete m_pLogFrame; } @@ -814,6 +818,7 @@ wxLogWindow::~wxLogWindow() // static variables // ---------------------------------------------------------------------------- wxLog *wxLog::ms_pLogger = (wxLog *) NULL; +bool wxLog::ms_doLog = TRUE; bool wxLog::ms_bAutoCreate = TRUE; wxTraceMask wxLog::ms_ulTraceMask = (wxTraceMask)0; @@ -942,6 +947,8 @@ void wxOnAssert(const char *szFile, int nLine, const char *szMsg) if ( s_bInAssert ) { // He-e-e-e-elp!! we're trapped in endless loop Trap(); + + return; } s_bInAssert = TRUE; @@ -960,22 +967,26 @@ void wxOnAssert(const char *szFile, int nLine, const char *szMsg) // send it to the normal log destination wxLogDebug(szBuf); - strcat(szBuf, _("\nDo you want to stop the program?" - "\nYou can also choose [Cancel] to suppress " - "further warnings.")); + #ifdef wxUSE_NOGUI + Trap(); + #else + strcat(szBuf, _("\nDo you want to stop the program?" + "\nYou can also choose [Cancel] to suppress " + "further warnings.")); - switch ( wxMessageBox(szBuf, _("Debug"), - wxYES_NO | wxCANCEL | wxICON_STOP ) ) { - case wxYES: - Trap(); - break; + switch ( wxMessageBox(szBuf, _("Debug"), + wxYES_NO | wxCANCEL | wxICON_STOP ) ) { + case wxYES: + Trap(); + break; - case wxCANCEL: - s_bNoAsserts = TRUE; - break; + case wxCANCEL: + s_bNoAsserts = TRUE; + break; - //case wxNO: nothing to do - } + //case wxNO: nothing to do + } + #endif // USE_NOGUI } s_bInAssert = FALSE;