diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index b8558c98e6f9ed37c4bf80bb72a13f873a55a5cd..25e11669563a4e42e2d083334ff7f47a6876a2f7 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -91,6 +91,8 @@ public: QmlAdapter *adapter() const; + void insertBreakpoint(BreakpointModelId id); + public slots: void disconnected(); void documentUpdated(QmlJS::Document::Ptr doc); @@ -130,7 +132,6 @@ private: void selectThread(int index); void attemptBreakpointSynchronization(); - void insertBreakpoint(BreakpointModelId id); void removeBreakpoint(BreakpointModelId id); void changeBreakpoint(BreakpointModelId id); bool acceptsBreakpoint(BreakpointModelId id) const; diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index b7c7b8ba9944b592930e3455b848f73869e3adfd..ee888af93e6fe2a0aaf3e7a14ea1f5abada9d60a 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -1131,23 +1131,21 @@ void QmlV8DebuggerClient::changeBreakpoint(const BreakpointModelId &id) BreakHandler *handler = d->engine->breakHandler(); const BreakpointParameters ¶ms = handler->breakpointData(id); + BreakpointResponse br = handler->response(id); if (params.type == BreakpointAtJavaScriptThrow) { d->setExceptionBreak(AllExceptions, params.enabled); - + br.enabled = params.enabled; + handler->setResponse(id, br); } else if (params.type == BreakpointOnQmlSignalHandler) { d->setBreakpoint(QString(_(EVENT)), params.functionName, params.enabled); - + br.enabled = params.enabled; + handler->setResponse(id, br); } else { - int breakpoint = d->breakpoints.value(id); - d->changeBreakpoint(breakpoint, params.enabled, QLatin1String(params.condition), - params.ignoreCount); + //V8 supports only minimalistic changes in breakpoint + //Remove the breakpoint and add again + removeBreakpoint(id); + d->engine->insertBreakpoint(id); } - - BreakpointResponse br = handler->response(id); - br.enabled = params.enabled; - br.condition = params.condition; - br.ignoreCount = params.ignoreCount; - handler->setResponse(id, br); } void QmlV8DebuggerClient::synchronizeBreakpoints()