Fix forward navigation control on Linux.
[dorian] / trace.cpp
index f762b19..ee9ee59 100644 (file)
--- a/trace.cpp
+++ b/trace.cpp
@@ -1,11 +1,11 @@
-#include <stdio.h>
-#include <stdlib.h>
 #include <QEvent>
+#include <QFile>
 
 #include "trace.h"
 
 int Trace::indent;
 QtMsgType Trace::level = QtDebugMsg;
+QFile Trace::file;
 
 Trace::EventName Trace::eventTab[] = {
     {QEvent::None, "QEvent::None"},
@@ -204,7 +204,6 @@ Trace::EventName Trace::eventTab[] = {
     {QEvent::UngrabMouse, "QEvent::UngrabMouse"},
     {QEvent::GrabKeyboard, "QEvent::GrabKeyboard"},
     {QEvent::UngrabKeyboard, "QEvent::UngrabKeyboard"},
-    {QEvent::CocoaRequestModal, "QEvent::CocoaRequestModal"},
     {QEvent::MacGLClearDrawable, "QEvent::MacGLClearDrawable"},
 
     {QEvent::StateMachineSignal, "QEvent::StateMachineSignal"},
@@ -274,5 +273,23 @@ void Trace::messageHandler(QtMsgType type, const char *msg)
             qt_message_output(type, msg);
         }
         qInstallMsgHandler(oldHandler);
+        if (Trace::file.isOpen()) {
+            Trace::file.write((prefix() + msg + "\n").toUtf8());
+            Trace::file.flush();
+        }
+    }
+}
+
+void Trace::setFileName(const QString &fileName)
+{
+    Trace::file.close();
+    Trace::file.setFileName(fileName);
+    if (!fileName.isEmpty()) {
+        (void)Trace::file.open(QIODevice::WriteOnly);
     }
 }
+
+QString Trace::fileName()
+{
+    return Trace::file.fileName();
+}