aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@theqtcompany.com>2015-12-01 15:50:15 +0100
committerUlf Hermann <ulf.hermann@theqtcompany.com>2016-01-07 16:25:16 +0000
commit39d1e93b675cc94708e5f727699fc6b3a290bda8 (patch)
tree962b9c77c86c3aebc0547a1f970e312145115269 /src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp
parenteae5a20b099450985442c70186fd7a7be442f133 (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.cpp11
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()) {