diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-12-01 15:50:15 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2016-01-07 16:25:16 +0000 |
commit | 39d1e93b675cc94708e5f727699fc6b3a290bda8 (patch) | |
tree | 962b9c77c86c3aebc0547a1f970e312145115269 /src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp | |
parent | eae5a20b099450985442c70186fd7a7be442f133 (diff) |
V4 Debugger: If no context is given inject the QML context
The user generally expects QML "root" objects to be in a "global"
scope. Or at least that makes debugging a lot easier. By opening a
WithContext with the relevant objects we can simulate that.
Task-number: QTCREATORBUG-14931
Change-Id: I89af0560803b2c54a35f08e9fd659e65fb937cb9
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp')
-rw-r--r-- | src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp index 6524a1ff28..dcf1fe8335 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp @@ -602,8 +602,11 @@ public: virtual void handleRequest() { - QV4Debugger *debugger = debugService->debuggerAgent.pausedDebugger(); + QJsonObject arguments = req.value(QStringLiteral("arguments")).toObject(); + QString expression = arguments.value(QStringLiteral("expression")).toString(); + int frame = -1; + QV4Debugger *debugger = debugService->debuggerAgent.pausedDebugger(); if (!debugger) { const QList<QV4Debugger *> &debuggers = debugService->debuggerAgent.debuggers(); if (debuggers.count() > 1) { @@ -614,12 +617,10 @@ public: return; } debugger = debuggers.first(); + } else { + frame = arguments.value(QStringLiteral("frame")).toInt(0); } - QJsonObject arguments = req.value(QStringLiteral("arguments")).toObject(); - QString expression = arguments.value(QStringLiteral("expression")).toString(); - const int frame = arguments.value(QStringLiteral("frame")).toInt(0); - ExpressionEvalJob job(debugger->engine(), frame, expression, debugger->collector()); debugger->runInEngine(&job); if (job.hasExeption()) { |