don't block GUI when showing all debug messages

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34612 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Peter Kümmel 2010-06-07 20:25:41 +00:00
parent fea446303d
commit ddc38c93ca
3 changed files with 18 additions and 5 deletions

View File

@ -58,6 +58,10 @@ GuiProgress::GuiProgress()
SLOT(doError(QString const &, QString const &))); SLOT(doError(QString const &, QString const &)));
connect(this, SIGNAL(information(QString const &, QString const &)), connect(this, SIGNAL(information(QString const &, QString const &)),
SLOT(doInformation(QString const &, QString const &))); SLOT(doInformation(QString const &, QString const &)));
flushDelay_.setInterval(200);
flushDelay_.setSingleShot(true);
connect(&flushDelay_, SIGNAL(timeout()), this, SLOT(updateWithLyXErr()));
} }
@ -98,6 +102,12 @@ void GuiProgress::doClearMessages()
void GuiProgress::lyxerrFlush() void GuiProgress::lyxerrFlush()
{
flushDelay_.start();
}
void GuiProgress::updateWithLyXErr()
{ {
appendLyXErrMessage(toqstr(lyxerr_stream_.str())); appendLyXErrMessage(toqstr(lyxerr_stream_.str()));
lyxerr_stream_.str(""); lyxerr_stream_.str("");

View File

@ -17,7 +17,7 @@
#include "DockView.h" #include "DockView.h"
#include <QTextEdit>
#include <QSplashScreen> #include <QSplashScreen>
#include <QTimer> #include <QTimer>
@ -76,10 +76,13 @@ private Q_SLOTS:
void doError(QString const &, QString const &); void doError(QString const &, QString const &);
void doInformation(QString const &, QString const &); void doInformation(QString const &, QString const &);
void updateWithLyXErr();
private: private:
void appendText(QString const &); void appendText(QString const &);
std::ostringstream lyxerr_stream_; std::ostringstream lyxerr_stream_;
QTimer flushDelay_;
}; };

View File

@ -202,7 +202,7 @@ LyXErr & toStream(LyXErr & l, T t)
{ {
if (l.enabled()){ if (l.enabled()){
l.stream() << t; l.stream() << t;
if (l.second_used()){ if (l.second_used()) {
l.second() << t; l.second() << t;
ProgressInterface::instance()->lyxerrFlush(); ProgressInterface::instance()->lyxerrFlush();
} }