summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
diff options
context:
space:
mode:
authorAurindam Jana <aurindam.jana@nokia.com>2011-12-22 18:43:09 +0100
committerAurindam Jana <aurindam.jana@nokia.com>2012-01-09 10:53:19 +0100
commit641716bee3d91663de5d660c22fd27ffafaeeaa0 (patch)
tree89806db5eecabeac055e5838cec7d6d6207c3d0b /src/plugins/debugger/qml/qscriptdebuggerclient.cpp
parentbcd9bbb6f5ff93895148db7d0db606aaebaebd76 (diff)
downloadqt-creator-641716bee3d91663de5d660c22fd27ffafaeeaa0.tar.gz
QmlDebugging: Implement RunToLine capability
Change-Id: I153c30310ac318d2de8b9a96c6d1e7f80439d306 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Diffstat (limited to 'src/plugins/debugger/qml/qscriptdebuggerclient.cpp')
-rw-r--r--src/plugins/debugger/qml/qscriptdebuggerclient.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
index 19d6fe9285..f8ad0c944f 100644
--- a/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
+++ b/src/plugins/debugger/qml/qscriptdebuggerclient.cpp
@@ -183,6 +183,17 @@ void QScriptDebuggerClient::executeStepI()
sendMessage(reply);
}
+void QScriptDebuggerClient::executeRunToLine(const ContextData &data)
+{
+ JSAgentBreakpointData bp;
+ bp.fileUrl = QUrl::fromLocalFile(data.fileName).toString().toUtf8();
+ bp.lineNumber = data.lineNumber;
+ bp.functionName = "TEMPORARY";
+ d->breakpoints.insert(bp);
+ synchronizeBreakpoints();
+ continueInferior();
+}
+
void QScriptDebuggerClient::continueInferior()
{
QByteArray reply;
@@ -398,6 +409,7 @@ void QScriptDebuggerClient::messageReceived(const QByteArray &data)
if (ideStackFrames.size() && ideStackFrames.back().function == QLatin1String("<global>"))
ideStackFrames.takeLast();
+
d->engine->stackHandler()->setFrames(ideStackFrames);
d->engine->watchHandler()->beginCycle();
@@ -478,6 +490,18 @@ void QScriptDebuggerClient::messageReceived(const QByteArray &data)
}
}
+ QList<JSAgentBreakpointData> breakpoints(d->breakpoints.toList());
+ foreach (const JSAgentBreakpointData &data, breakpoints) {
+ if (data.fileUrl == QUrl::fromLocalFile(file).toString().toUtf8() &&
+ data.lineNumber == line &&
+ data.functionName == "TEMPORARY") {
+ breakpoints.removeOne(data);
+ d->breakpoints = JSAgentBreakpoints::fromList(breakpoints);
+ synchronizeBreakpoints();
+ break;
+ }
+ }
+
d->logReceiveMessage(logString);
}