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>
This commit is contained in:
Daniel Teske
2012-02-14 15:08:32 +01:00
parent 5e27104f56
commit cc04261e78
5 changed files with 10 additions and 0 deletions

View File

@@ -62,6 +62,7 @@ void Bookmark::updateLineNumber(int lineNumber)
m_lineNumber = lineNumber; m_lineNumber = lineNumber;
m_manager->updateBookmark(this); m_manager->updateBookmark(this);
} }
BaseTextMark::updateLineNumber(lineNumber);
} }
void Bookmark::updateBlock(const QTextBlock &block) void Bookmark::updateBlock(const QTextBlock &block)

View File

@@ -68,6 +68,7 @@ void BreakpointMarker::removedFromEditor()
void BreakpointMarker::updateLineNumber(int lineNumber) void BreakpointMarker::updateLineNumber(int lineNumber)
{ {
breakHandler()->updateLineNumberFromMarker(m_id, lineNumber); breakHandler()->updateLineNumberFromMarker(m_id, lineNumber);
BaseTextMark::updateLineNumber(lineNumber);
} }
} // namespace Internal } // namespace Internal

View File

@@ -56,6 +56,7 @@ private:
void TaskMark::updateLineNumber(int lineNumber) void TaskMark::updateLineNumber(int lineNumber)
{ {
ProjectExplorerPlugin::instance()->taskHub()->updateTaskLineNumber(m_id, lineNumber); ProjectExplorerPlugin::instance()->taskHub()->updateTaskLineNumber(m_id, lineNumber);
BaseTextMark::updateLineNumber(lineNumber);
} }
void TaskMark::removedFromEditor() void TaskMark::removedFromEditor()

View File

@@ -128,6 +128,11 @@ BaseTextMark::~BaseTextMark()
Internal::TextEditorPlugin::instance()->baseTextMarkRegistry()->remove(this); Internal::TextEditorPlugin::instance()->baseTextMarkRegistry()->remove(this);
} }
void BaseTextMark::updateLineNumber(int lineNumber)
{
m_line = lineNumber;
}
void BaseTextMark::updateMarker() void BaseTextMark::updateMarker()
{ {
if (m_markableInterface) if (m_markableInterface)

View File

@@ -61,6 +61,8 @@ public:
BaseTextMark(const QString &fileName, int lineNumber); BaseTextMark(const QString &fileName, int lineNumber);
virtual ~BaseTextMark(); virtual ~BaseTextMark();
void updateLineNumber(int lineNumber);
// call this if the icon has changed. // call this if the icon has changed.
void updateMarker(); void updateMarker();