diff options
-rw-r--r-- | client/debug.cc | 25 | ||||
-rw-r--r-- | client/debug.h | 34 |
2 files changed, 36 insertions, 23 deletions
diff --git a/client/debug.cc b/client/debug.cc index 6eed1ad..066b0bc 100644 --- a/client/debug.cc +++ b/client/debug.cc @@ -27,8 +27,6 @@ */ #include "debug.h" -#include <QDialog> -#include <QListWidget> #include <QVBoxLayout> #include <QCloseEvent> #include <QSettings> @@ -37,19 +35,6 @@ static const char * const class_str[] = { "debug", "error", "warn", "log" }; -class DebugWindow : public QDialog { -public: - DebugWindow(); - - void log(const char *func, const char *file, const int line, - debug_class cl, const char *ch, QString &msg); -protected: - void closeEvent(QCloseEvent *event); - -private: - QListWidget *lst; -}; - DebugWindow::DebugWindow() { setLayout(new QVBoxLayout()); @@ -62,6 +47,9 @@ DebugWindow::DebugWindow() resize(settings.value("size", QSize(700, 800)).toSize()); move(settings.value("pos", QPoint(0, 0)).toPoint()); settings.endGroup(); + + timer.setSingleShot(true); + connect(&timer, SIGNAL(timeout()), lst, SLOT(scrollToBottom())); } void DebugWindow::closeEvent(QCloseEvent *event) @@ -77,6 +65,8 @@ void DebugWindow::closeEvent(QCloseEvent *event) void DebugWindow::log(const char *func, const char *file, const int line, debug_class cl, const char *ch, QString &msg) { + timer.stop(); + // Remove trailing newlines. while(msg.endsWith("\n")) msg = msg.left(msg.length() - 1); @@ -92,11 +82,12 @@ void DebugWindow::log(const char *func, const char *file, const int line, if(cl == _warn) item->setBackground(QBrush(QColor(200, 200, 230))); if(cl == _log) item->setBackground(QBrush(QColor(200, 230, 200))); + lst->addItem(item); - lst->scrollToBottom(); + // lst->scrollToBottom(); + timer.start(100); } - static DebugWindow* debugwindow = NULL; void dbg_init() diff --git a/client/debug.h b/client/debug.h index e0de223..ebafce5 100644 --- a/client/debug.h +++ b/client/debug.h @@ -27,6 +27,34 @@ */ #ifndef __PRACRO_DEBUG_H__ +#include <QDialog> +#include <QListWidget> +#include <QCloseEvent> +#include <QTimer> + +typedef enum { + _debug, + _error, + _warn, + _log +} debug_class; + +class DebugWindow : public QDialog { + Q_OBJECT +public: + DebugWindow(); + + void log(const char *func, const char *file, const int line, + debug_class cl, const char *ch, QString &msg); + +protected: + void closeEvent(QCloseEvent *event); + +private: + QListWidget *lst; + QTimer timer; +}; + void dbg_init(); void dbg_free(); @@ -36,12 +64,6 @@ void dbg_hide(); bool dbg_enabled(); -typedef enum { - _debug, - _error, - _warn, - _log -} debug_class; void dbg_log(const char *func, const char *file, const int line, debug_class cl, const char *ch, const char *fmt, ...) |