From cc04261e78b366b4d134adfda96388b6289d6939 Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@nokia.com> Date: Tue, 14 Feb 2012 15:08:32 +0100 Subject: [PATCH] Fix BaseTextmark lineNumber tracking The following sequence would add the BaseTextmark to the wrong line: 1) Add a mark on line x 2) Move line x down by addign newlines above 3) Close and reopen the file => Mark would be readded to line x Change-Id: Ia5d580b5893331974fb908e367b74df69fbb6572 Reviewed-by: Eike Ziller <eike.ziller@nokia.com> --- src/plugins/bookmarks/bookmark.cpp | 1 + src/plugins/debugger/breakpointmarker.cpp | 1 + src/plugins/projectexplorer/taskhub.cpp | 1 + src/plugins/texteditor/basetextmark.cpp | 5 +++++ src/plugins/texteditor/basetextmark.h | 2 ++ 5 files changed, 10 insertions(+) diff --git a/src/plugins/bookmarks/bookmark.cpp b/src/plugins/bookmarks/bookmark.cpp index 71e27772021..4f2d7cf144e 100644 --- a/src/plugins/bookmarks/bookmark.cpp +++ b/src/plugins/bookmarks/bookmark.cpp @@ -62,6 +62,7 @@ void Bookmark::updateLineNumber(int lineNumber) m_lineNumber = lineNumber; m_manager->updateBookmark(this); } + BaseTextMark::updateLineNumber(lineNumber); } void Bookmark::updateBlock(const QTextBlock &block) diff --git a/src/plugins/debugger/breakpointmarker.cpp b/src/plugins/debugger/breakpointmarker.cpp index 962c613889e..fb1799cd124 100644 --- a/src/plugins/debugger/breakpointmarker.cpp +++ b/src/plugins/debugger/breakpointmarker.cpp @@ -68,6 +68,7 @@ void BreakpointMarker::removedFromEditor() void BreakpointMarker::updateLineNumber(int lineNumber) { breakHandler()->updateLineNumberFromMarker(m_id, lineNumber); + BaseTextMark::updateLineNumber(lineNumber); } } // namespace Internal diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 6d1d73edfb7..6f223945235 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -56,6 +56,7 @@ private: void TaskMark::updateLineNumber(int lineNumber) { ProjectExplorerPlugin::instance()->taskHub()->updateTaskLineNumber(m_id, lineNumber); + BaseTextMark::updateLineNumber(lineNumber); } void TaskMark::removedFromEditor() diff --git a/src/plugins/texteditor/basetextmark.cpp b/src/plugins/texteditor/basetextmark.cpp index 04dabf8c790..422649c0490 100644 --- a/src/plugins/texteditor/basetextmark.cpp +++ b/src/plugins/texteditor/basetextmark.cpp @@ -128,6 +128,11 @@ BaseTextMark::~BaseTextMark() Internal::TextEditorPlugin::instance()->baseTextMarkRegistry()->remove(this); } +void BaseTextMark::updateLineNumber(int lineNumber) +{ + m_line = lineNumber; +} + void BaseTextMark::updateMarker() { if (m_markableInterface) diff --git a/src/plugins/texteditor/basetextmark.h b/src/plugins/texteditor/basetextmark.h index 28f600a8e5f..69e031bbae4 100644 --- a/src/plugins/texteditor/basetextmark.h +++ b/src/plugins/texteditor/basetextmark.h @@ -61,6 +61,8 @@ public: BaseTextMark(const QString &fileName, int lineNumber); virtual ~BaseTextMark(); + void updateLineNumber(int lineNumber); + // call this if the icon has changed. void updateMarker(); -- GitLab