aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/breakhandler.cpp
diff options
context:
space:
mode:
authorEike Ziller <[email protected]>2019-10-28 11:43:06 +0100
committerEike Ziller <[email protected]>2019-10-28 11:43:06 +0100
commita546e3a9cc70ab16528320f3ff484722736ed628 (patch)
tree7546397e89edc0c018edcd433549aa852e0c4a42 /src/plugins/debugger/breakhandler.cpp
parentfea693d9f9434c6396373fa9d97ac92893ad08c5 (diff)
parent189ab38641d093ef1a987a985c3bbbe757118360 (diff)
Merge remote-tracking branch 'origin/4.10' into 4.11
Conflicts: src/libs/utils/fancymainwindow.cpp src/plugins/projectexplorer/msvctoolchain.cpp Change-Id: I7aaeeb4f96c95fefd4944c083c1ddf9a19cd81d6
Diffstat (limited to 'src/plugins/debugger/breakhandler.cpp')
-rw-r--r--src/plugins/debugger/breakhandler.cpp43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index 0958c233067..90dd8f3c86e 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -169,31 +169,24 @@ public:
// running, as this can be triggered by moving the breakpoint to
// the next line that generated code.
- m_gbp->m_params.lineNumber = lineNumber;
- m_gbp->updateMarker();
- m_gbp->update();
+ m_gbp->updateLineNumber(lineNumber);
}
void updateFileName(const FilePath &fileName) final
{
TextMark::updateFileName(fileName);
QTC_ASSERT(m_gbp, return);
- m_gbp->m_params.fileName = fileName.toString();
- m_gbp->update();
+ m_gbp->updateFileName(fileName);
}
bool isDraggable() const final { return true; }
void dragToLine(int line) final
{
+ TextMark::move(line);
QTC_ASSERT(m_gbp, return);
QTC_ASSERT(BreakpointManager::globalBreakpoints().contains(m_gbp), return);
- BreakpointParameters params = m_gbp->m_params;
- params.lineNumber = line;
- GlobalBreakpoint gbp = m_gbp;
- m_gbp = GlobalBreakpoint();
- gbp->deleteBreakpoint();
- m_gbp = BreakpointManager::createBreakpoint(params);
+ m_gbp->updateLineNumber(line);
}
bool isClickable() const final { return true; }
@@ -2273,6 +2266,23 @@ void GlobalBreakpointItem::removeBreakpointFromModel()
theBreakpointManager->destroyItem(this);
}
+void GlobalBreakpointItem::updateLineNumber(int lineNumber)
+{
+ if (m_params.lineNumber == lineNumber)
+ return;
+ m_params.lineNumber = lineNumber;
+ update();
+}
+
+void GlobalBreakpointItem::updateFileName(const FilePath &fileName)
+{
+ const QString &file = fileName.toString();
+ if (m_params.fileName == file)
+ return;
+ m_params.fileName = file;
+ update();
+}
+
QString GlobalBreakpointItem::markerFileName() const
{
// Some heuristics to find a "good" file name.
@@ -2308,11 +2318,14 @@ void GlobalBreakpointItem::updateMarker()
const FilePath file = FilePath::fromString(m_params.fileName);
const int line = m_params.lineNumber;
- if (m_marker && (file != m_marker->fileName() || line != m_marker->lineNumber()))
- destroyMarker();
-
- if (!m_marker && !file.isEmpty() && line > 0)
+ if (m_marker) {
+ if (file != m_marker->fileName())
+ m_marker->updateFileName(file);
+ if (line != m_marker->lineNumber())
+ m_marker->move(line);
+ } else if (!file.isEmpty() && line > 0) {
m_marker = new GlobalBreakpointMarker(this, file, line);
+ }
if (m_marker)
m_marker->setToolTip(toolTip());