Move handling of -qmljsdebugger argument to QCoreApplication
authorKai Koehne <kai.koehne@nokia.com>
Mon, 19 Sep 2011 08:56:12 +0000 (10:56 +0200)
committerQt by Nokia <qt-info@nokia.com>
Mon, 19 Sep 2011 14:37:51 +0000 (16:37 +0200)
Move handling of -qmljsdebugger= argument from QApplication
to QCoreApplication. It makes sense to allow debugging also
for applications based on QCoreApplication (which we intend
to support in QtDeclarative).

Change-Id: I5a03a4510fc166cea5aad146da673ee0e7cd5d36
Reviewed-on: http://codereview.qt-project.org/5121
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
src/corelib/kernel/qcoreapplication.cpp
src/corelib/kernel/qcoreapplication_p.h
src/gui/kernel/qguiapplication_p.h
src/widgets/kernel/qapplication.cpp
tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp

index d716c7b..d7fb9d3 100644 (file)
@@ -210,6 +210,28 @@ bool QCoreApplicationPrivate::checkInstance(const char *function)
     return b;
 }
 
+void QCoreApplicationPrivate::processCommandLineArguments()
+{
+    int j = argc ? 1 : 0;
+    for (int i = 1; i < argc; ++i) {
+        if (argv[i] && *argv[i] != '-') {
+            argv[j++] = argv[i];
+            continue;
+        }
+        QByteArray arg = argv[i];
+        if (arg.startsWith("-qmljsdebugger=")) {
+            qmljs_debug_arguments = QString::fromLocal8Bit(arg.right(arg.length() - 15));
+        } else {
+            argv[j++] = argv[i];
+        }
+    }
+
+    if (j < argc) {
+        argv[j] = 0;
+        argc = j;
+    }
+}
+
 // Support for introspection
 
 QSignalSpyCallbackSet Q_CORE_EXPORT qt_signal_spy_callback_set = { 0, 0, 0, 0 };
@@ -674,6 +696,8 @@ void QCoreApplication::init()
     }
 #endif
 
+    d->processCommandLineArguments();
+
     qt_startup_hook();
 }
 
index 0914b24..d61a5a1 100644 (file)
@@ -141,6 +141,10 @@ public:
     static uint attribs;
     static inline bool testAttribute(uint flag) { return attribs & (1 << flag); }
     static int app_compile_version;
+
+    void processCommandLineArguments();
+    QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging.
+    inline QString qmljsDebugArgumentsString() { return qmljs_debug_arguments; }
 };
 
 QT_END_NAMESPACE
index 9b81703..7ee95b7 100644 (file)
@@ -175,8 +175,6 @@ public:
 
     static bool quitOnLastWindowClosed;
 
-    QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging.
-    inline QString qmljsDebugArgumentsString() { return qmljs_debug_arguments; }
 
 private:
     void init();
index ff3fd89..2dfdbaf 100644 (file)
@@ -536,8 +536,6 @@ void QApplicationPrivate::process_cmdline()
         QString s;
         if (arg == "-qdevel" || arg == "-qdebug") {
             // obsolete argument
-        } else if (arg.indexOf("-qmljsdebugger=", 0) != -1) {
-            qmljs_debug_arguments = QString::fromLocal8Bit(arg.right(arg.length() - 15));
         } else if (arg.indexOf("-style=", 0) != -1) {
             s = QString::fromLocal8Bit(arg.right(arg.length() - 7).toLower());
         } else if (arg == "-style" && i < argc-1) {
index 99f0941..62275f8 100644 (file)
@@ -144,6 +144,14 @@ void tst_QCoreApplication::argc()
         QCOMPARE(argc, 0);
         QCOMPARE(app.argc(), 0);
     }
+
+    {
+        int argc = 2;
+        char *argv[] = { "tst_qcoreapplication", "-qmljsdebugger=port:3768,block" };
+        QCoreApplication app(argc, argv);
+        QCOMPARE(argc, 1);
+        QCOMPARE(app.argc(), 1);
+    }
 }
 
 class EventGenerator : public QObject