From d2d3c6dd15fc89531730c139d37d1bdd4ebcc376 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Wed, 12 Oct 2011 17:26:18 +0200
Subject: [PATCH] QmlCppEngine: Make sure that breakpoint markers get removed

resetLocation() called by DebuggerPlugin::handle* should automatically
reset the locations for stepping etc.

Change-Id: I3e20f93ade7f40e1e1f33b1b48b11522b59771f8
Task-number: QTCREATORBUG-6291
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
---
 src/plugins/debugger/debuggerengine.h     | 2 +-
 src/plugins/debugger/qml/qmlcppengine.cpp | 8 ++++++++
 src/plugins/debugger/qml/qmlcppengine.h   | 1 +
 src/plugins/debugger/qml/qmlengine.cpp    | 4 ----
 4 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index d20bb421bf3..4f43fb1ba46 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -263,7 +263,7 @@ public:
         int timeout = -1) const;
     Q_SLOT void showStatusMessage(const QString &msg, int timeout = -1) const;
 
-    void resetLocation();
+    virtual void resetLocation();
     virtual void gotoLocation(const Internal::Location &location);
     virtual void quitDebugger(); // called by DebuggerRunControl
 
diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp
index 38e150e2013..b327e747e9e 100644
--- a/src/plugins/debugger/qml/qmlcppengine.cpp
+++ b/src/plugins/debugger/qml/qmlcppengine.cpp
@@ -671,6 +671,14 @@ void QmlCppEngine::showMessage(const QString &msg, int channel, int timeout) con
     DebuggerEngine::showMessage(msg, channel, timeout);
 }
 
+void QmlCppEngine::resetLocation()
+{
+    if (d->m_qmlEngine)
+        d->m_qmlEngine->resetLocation();
+    if (d->m_cppEngine)
+        d->m_cppEngine->resetLocation();
+}
+
 DebuggerEngine *QmlCppEngine::cppEngine() const
 {
     return d->m_cppEngine;
diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h
index d7f462305a2..6daaa629332 100644
--- a/src/plugins/debugger/qml/qmlcppengine.h
+++ b/src/plugins/debugger/qml/qmlcppengine.h
@@ -94,6 +94,7 @@ public:
 
     void showMessage(const QString &msg, int channel = LogDebug,
         int timeout = -1) const;
+    void resetLocation();
 
 protected:
     void detachDebugger();
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index c64f77d6adf..914fbdab605 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -451,7 +451,6 @@ void QmlEngine::executeStep()
         logMessage(LogSend, "STEPINTO");
         d->m_adapter.activeDebuggerClient()->executeStep();
     }
-    resetLocation();
     notifyInferiorRunRequested();
     notifyInferiorRunOk();
 }
@@ -462,7 +461,6 @@ void QmlEngine::executeStepI()
         logMessage(LogSend, "STEPINTO");
         d->m_adapter.activeDebuggerClient()->executeStepI();
     }
-    resetLocation();
     notifyInferiorRunRequested();
     notifyInferiorRunOk();
 }
@@ -473,7 +471,6 @@ void QmlEngine::executeStepOut()
         logMessage(LogSend, "STEPOUT");
         d->m_adapter.activeDebuggerClient()->executeStepOut();
     }
-    resetLocation();
     notifyInferiorRunRequested();
     notifyInferiorRunOk();
 }
@@ -484,7 +481,6 @@ void QmlEngine::executeNext()
         logMessage(LogSend, "STEPOVER");
         d->m_adapter.activeDebuggerClient()->executeNext();
     }
-    resetLocation();
     notifyInferiorRunRequested();
     notifyInferiorRunOk();
 }
-- 
GitLab