From 15fc9396b5065fd8146f7c3415bbd2ccb9d70091 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 8 Sep 2010 09:54:40 +0200 Subject: [PATCH] debugger: allow breakpoint removal also at the original position, not the "acknolegdged" one Task-number: QTCREATORBUG-2264 --- src/plugins/debugger/breakhandler.cpp | 9 ++++++--- src/plugins/debugger/breakhandler.h | 3 ++- src/plugins/debugger/breakpoint.cpp | 16 ++++------------ src/plugins/debugger/breakpoint.h | 3 ++- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index f3302d3d791..5fb48023d71 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -571,17 +571,20 @@ void BreakHandler::removeAllBreakpoints() updateMarkers(); } -BreakpointData *BreakHandler::findBreakpoint(const QString &fileName, int lineNumber) +BreakpointData *BreakHandler::findBreakpoint(const QString &fileName, + int lineNumber, bool useMarkerPosition) { foreach (BreakpointData *data, m_bp) - if (data->isLocatedAt(fileName, lineNumber)) + if (data->isLocatedAt(fileName, lineNumber, useMarkerPosition)) return data; return 0; } void BreakHandler::toggleBreakpoint(const QString &fileName, int lineNumber) { - BreakpointData *data = findBreakpoint(fileName, lineNumber); + BreakpointData *data = findBreakpoint(fileName, lineNumber, true); + if (!data) + data = findBreakpoint(fileName, lineNumber, false); if (data) { removeBreakpoint(data); } else { diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h index 270310e60f3..f5624d698c4 100644 --- a/src/plugins/debugger/breakhandler.h +++ b/src/plugins/debugger/breakhandler.h @@ -93,7 +93,8 @@ public: void storeToTemplate(BreakHandler *other); void toggleBreakpoint(const QString &fileName, int lineNumber); void toggleBreakpointEnabled(const QString &fileName, int lineNumber); - BreakpointData *findBreakpoint(const QString &fileName, int lineNumber); + BreakpointData *findBreakpoint(const QString &fileName, int lineNumber, + bool useMarkerPosition = true); public slots: void appendBreakpoint(BreakpointData *data); diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp index 981aed0ba43..314ca87681b 100644 --- a/src/plugins/debugger/breakpoint.cpp +++ b/src/plugins/debugger/breakpoint.cpp @@ -304,19 +304,11 @@ QString BreakpointData::toString() const return rc; } -bool BreakpointData::isLocatedAt(const QString &fileName_, int lineNumber_) const +bool BreakpointData::isLocatedAt(const QString &fileName_, int lineNumber_, + bool useMarkerPosition) const { - /* - if (lineNumber != QString::number(lineNumber_)) - return false; - if (fileName == fileName_) - return true; - if (fileName_.endsWith(fileName)) - return true; - return false; - */ - return lineNumber_ == m_markerLineNumber - && fileNameMatch(fileName_, m_markerFileName); + int line = useMarkerPosition ? m_markerLineNumber : lineNumber.toInt(); + return lineNumber_ == line && fileNameMatch(fileName_, m_markerFileName); } bool BreakpointData::isSimilarTo(const BreakpointData *needle) const diff --git a/src/plugins/debugger/breakpoint.h b/src/plugins/debugger/breakpoint.h index 7177c17142f..0ff1f4b8ef0 100644 --- a/src/plugins/debugger/breakpoint.h +++ b/src/plugins/debugger/breakpoint.h @@ -58,7 +58,8 @@ public: QString toString() const; BreakHandler *handler() { return m_handler; } - bool isLocatedAt(const QString &fileName, int lineNumber) const; + bool isLocatedAt(const QString &fileName, int lineNumber, + bool useMarkerPosition) const; bool isSimilarTo(const BreakpointData *needle) const; bool conditionsMatch() const; -- GitLab