Initialize ITextMark with a lineNumber

Ensure that it is updated as the lines are moved. That can be later used
to quickly find and remove the marks again.

Change-Id: I2285111996d5c8ef12f792fd73ff00ce186addc1
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Daniel Teske
2012-02-21 16:27:04 +01:00
committed by hjk
parent b112c277da
commit 2df2c0655c
7 changed files with 44 additions and 33 deletions

View File

@@ -47,7 +47,7 @@ public:
TextMarks marks() const { return m_marksCache; }
// ITextMarkable
bool addMark(ITextMark *mark, int line);
bool addMark(ITextMark *mark);
TextMarks marksAt(int line) const;
void removeMark(ITextMark *mark);
void updateMark(ITextMark *mark);
@@ -69,10 +69,10 @@ DocumentMarker::~DocumentMarker()
}
bool DocumentMarker::addMark(TextEditor::ITextMark *mark, int line)
bool DocumentMarker::addMark(TextEditor::ITextMark *mark)
{
QTC_ASSERT(line >= 1, return false);
int blockNumber = line - 1;
QTC_ASSERT(mark->lineNumber() >= 1, return false);
int blockNumber = mark->lineNumber() - 1;
BaseTextDocumentLayout *documentLayout =
qobject_cast<BaseTextDocumentLayout*>(document->documentLayout());
QTC_ASSERT(documentLayout, return false);
@@ -83,6 +83,7 @@ bool DocumentMarker::addMark(TextEditor::ITextMark *mark, int line)
userData->addMark(mark);
m_marksCache.append(mark);
mark->updateLineNumber(blockNumber + 1);
QTC_CHECK(mark->lineNumber() == blockNumber + 1);
mark->updateBlock(block);
documentLayout->hasMarks = true;
documentLayout->maxMarkWidthFactor = qMax(mark->widthFactor(),
@@ -719,6 +720,7 @@ void BaseTextDocumentLayout::updateMarksLineNumber()
if (const TextBlockUserData *userData = testUserData(block))
foreach (ITextMark *mrk, userData->marks()) {
mrk->updateLineNumber(blockNumber + 1);
QTC_CHECK(mrk->lineNumber() == blockNumber +1);
}
block = block.next();
++blockNumber;