From 383ea95889d7f841ebe5047572861febf65f0450 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 17 Oct 2019 14:46:26 +0200 Subject: Debugger: Avoid recreation of breakpoint markers Change-Id: Ie3b160a7b7137257b2028d03878700675142102f Reviewed-by: hjk --- src/plugins/debugger/breakhandler.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index 22fd4a4008..63b03189be 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -2260,13 +2260,18 @@ void GlobalBreakpointItem::removeBreakpointFromModel() void GlobalBreakpointItem::updateLineNumber(int lineNumber) { + if (m_params.lineNumber == lineNumber) + return; m_params.lineNumber = lineNumber; update(); } void GlobalBreakpointItem::updateFileName(const FilePath &fileName) { - m_params.fileName = fileName.toString(); + const QString &file = fileName.toString(); + if (m_params.fileName == file) + return; + m_params.fileName = file; update(); } @@ -2305,11 +2310,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()); -- cgit v1.2.1