Move mark related functions to BaseTextDocumentLayout

BaseTextDocument::updateMarksLineNumber() and updateMarksBlock()

Change-Id: I407cddcbe3133a5e8af960d39fe8d499b640c708
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
This commit is contained in:
Daniel Teske
2012-02-14 19:27:15 +01:00
parent 502e8ab361
commit b9016b900e
4 changed files with 30 additions and 30 deletions

View File

@@ -675,20 +675,21 @@ void BaseTextEditorWidget::editorContentsChange(int position, int charsRemoved,
d->m_contentsChanged = true;
QTextDocument *doc = document();
BaseTextDocumentLayout *documentLayout = static_cast<BaseTextDocumentLayout*>(doc->documentLayout());
// Keep the line numbers and the block information for the text marks updated
if (charsRemoved != 0) {
d->updateMarksLineNumber();
d->updateMarksBlock(document()->findBlock(position));
documentLayout->updateMarksLineNumber();
documentLayout->updateMarksBlock(document()->findBlock(position));
} else {
const QTextBlock posBlock = doc->findBlock(position);
const QTextBlock nextBlock = doc->findBlock(position + charsAdded);
if (posBlock != nextBlock) {
d->updateMarksLineNumber();
d->updateMarksBlock(posBlock);
d->updateMarksBlock(nextBlock);
documentLayout->updateMarksLineNumber();
documentLayout->updateMarksBlock(posBlock);
documentLayout->updateMarksBlock(nextBlock);
} else {
d->updateMarksBlock(posBlock);
documentLayout->updateMarksBlock(posBlock);
}
}
@@ -4823,28 +4824,6 @@ void BaseTextEditorWidget::clearLink()
d->m_linkPressed = false;
}
void BaseTextEditorPrivate::updateMarksBlock(const QTextBlock &block)
{
if (const TextBlockUserData *userData = BaseTextDocumentLayout::testUserData(block))
foreach (ITextMark *mrk, userData->marks())
mrk->updateBlock(block);
}
void BaseTextEditorPrivate::updateMarksLineNumber()
{
QTextDocument *doc = q->document();
QTextBlock block = doc->begin();
int blockNumber = 0;
while (block.isValid()) {
if (const TextBlockUserData *userData = BaseTextDocumentLayout::testUserData(block))
foreach (ITextMark *mrk, userData->marks()) {
mrk->updateLineNumber(blockNumber + 1);
}
block = block.next();
++blockNumber;
}
}
void BaseTextEditorWidget::markBlocksAsChanged(QList<int> blockNumbers)
{
QTextBlock block = document()->begin();