From 1ec5cbf3de62355577408ced5017c1844c71edaf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 10 Jan 2003 23:47:14 +0000 Subject: [PATCH] removed wxLog::HasPendingMessages() (it can't be made to work correctly with wxLogChain); don't send the messages going to a log file to debug output under MSW git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18675 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/log.tex | 16 +++------------- include/wx/log.h | 19 ++++++++++--------- src/common/log.cpp | 18 +++++++++++------- src/generic/logg.cpp | 2 -- 4 files changed, 24 insertions(+), 31 deletions(-) diff --git a/docs/latex/wx/log.tex b/docs/latex/wx/log.tex index c8a697c45e..fa31caabb9 100644 --- a/docs/latex/wx/log.tex +++ b/docs/latex/wx/log.tex @@ -72,15 +72,12 @@ night in the current time zone). There also functions to support message buffering. Why are they needed? Some of wxLog implementations, most notably the standard wxLogGui class, buffer the messages (for example, to avoid showing the user a zillion of modal -message boxes one after another - which would be really annoying). +message boxes one after another -- which would be really annoying). \helpref{Flush()}{wxlogflush} shows them all and clears the buffer contents. -Although this function doesn't do anything if the buffer is already empty, -\helpref{HasPendingMessages()}{wxloghaspendingmessages} is also provided which -allows to explicitly verify it. +This function doesn't do anything if the buffer is already empty. \helpref{Flush}{wxlogflush}\\ -\helpref{FlushActive}{wxlogflushactive}\\ -\helpref{HasPendingMessages}{wxloghaspendingmessages} +\helpref{FlushActive}{wxlogflushactive} \membersection{Customization}\label{wxlogcustomization} @@ -294,13 +291,6 @@ See also: \helpref{Flush}{wxlogflush} -\membersection{wxLog::HasPendingMessages}\label{wxloghaspendingmessages} - -\constfunc{bool}{HasPendingMessages}{\void} - -Returns true if there are any messages in the buffer (not yet shown to the -user). (Almost) for internal use only. - \membersection{wxLog::SetVerbose}\label{wxlogsetverbose} \func{static void}{SetVerbose}{\param{bool }{ verbose = TRUE}} diff --git a/include/wx/log.h b/include/wx/log.h index 04efbd0bd8..b3c90abbdf 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -143,22 +143,19 @@ public: // and iostream logs don't need it, but wxGuiLog does to avoid showing // 17 modal dialogs one after another) virtual void Flush(); - // call to Flush() may be optimized: call it only if this function - // returns true (although Flush() also returns immediately if there is - // no messages, this functions is more efficient because inline) - bool HasPendingMessages() const { return m_bHasMessages; } - // only one sink is active at each moment // flush the active target if any static void FlushActive() { if ( !ms_suspendCount ) { wxLog *log = GetActiveTarget(); - if ( log && log->HasPendingMessages() ) + if ( log ) log->Flush(); } } + + // only one sink is active at each moment // get current log target, will call wxApp::CreateLogTarget() to // create one if none exists static wxLog *GetActiveTarget(); @@ -224,9 +221,11 @@ public: // make dtor virtual for all derived classes virtual ~wxLog() { } -protected: - bool m_bHasMessages; // any messages in the queue? + // this method exists for backwards compatibility only, don't use + bool HasPendingMessages() const { return true; } + +protected: // the logging functions that can be overriden // default DoLog() prepends the time stamp and a prefix corresponding // to the message to szString and then passes it to DoLogString() @@ -433,7 +432,9 @@ protected: wxArrayInt m_aSeverity; // one of wxLOG_XXX values wxArrayLong m_aTimes; // the time of each message bool m_bErrors, // do we have any errors? - m_bWarnings; // any warnings? + m_bWarnings, // any warnings? + m_bHasMessages; // any messages at all? + }; #endif // wxUSE_LOGGUI diff --git a/src/common/log.cpp b/src/common/log.cpp index 8c5c23be29..b53bb3a6a9 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -351,7 +351,6 @@ void WXDLLEXPORT wxLogSysError(long lErrCode, const wxChar *szFormat, ...) wxLog::wxLog() { - m_bHasMessages = FALSE; } wxChar *wxLog::SetLogBuffer( wxChar *buf, size_t size) @@ -493,8 +492,7 @@ void wxLog::DoLogString(const wxChar *WXUNUSED(szString), time_t WXUNUSED(t)) void wxLog::Flush() { - // remember that we don't have any more messages to show - m_bHasMessages = FALSE; + // nothing to do here } // ---------------------------------------------------------------------------- @@ -706,11 +704,17 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) fflush(m_fp); // under Windows, programs usually don't have stderr at all, so show the - // messages also under debugger - unless it's a console program + // messages also under debugger (unless it's a console program which does + // have stderr or unless this is a file logger which doesn't use stderr at + // all) #if defined(__WXMSW__) && wxUSE_GUI && !defined(__WXMICROWIN__) - str += wxT("\r\n") ; - OutputDebugString(str.c_str()); + if ( m_fp == stderr ) + { + str += wxT("\r\n") ; + OutputDebugString(str.c_str()); + } #endif // MSW + #if defined(__WXMAC__) && !defined(__DARWIN__) && wxUSE_GUI Str255 pstr ; strcpy( (char*) pstr , str.c_str() ) ; @@ -793,7 +797,7 @@ void wxLogChain::Flush() if ( m_logOld ) m_logOld->Flush(); - // be careful to avoid inifinite recursion + // be careful to avoid infinite recursion if ( m_logNew && m_logNew != this ) m_logNew->Flush(); } diff --git a/src/generic/logg.cpp b/src/generic/logg.cpp index 08c07e692c..54e5bfa109 100644 --- a/src/generic/logg.cpp +++ b/src/generic/logg.cpp @@ -620,8 +620,6 @@ void wxLogWindow::DoLog(wxLogLevel level, const wxChar *szString, time_t t) wxLog::DoLog(level, szString, t); } } - - m_bHasMessages = TRUE; } void wxLogWindow::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) -- 2.45.2