forked from qt-creator/qt-creator
Editor: Add replacement helper to document layout
More inline with the other text block user data members and cleaner on the client side. Additionally add some & for const arguments and remove test function call. Change-Id: I19e646aa204eedf447c02a2f76b89c3430280169 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -345,7 +345,7 @@ void TextBlockUserData::setCodeFormatterData(CodeFormatterData *data)
|
||||
m_codeFormatterData = data;
|
||||
}
|
||||
|
||||
void TextBlockUserData::setReplacement(const QString replacement)
|
||||
void TextBlockUserData::setReplacement(const QString &replacement)
|
||||
{
|
||||
m_replacement.reset(new QTextDocument(replacement));
|
||||
m_replacement->setDocumentLayout(new TextDocumentLayout(m_replacement.get()));
|
||||
@@ -528,30 +528,32 @@ QByteArray TextDocumentLayout::expectedRawStringSuffix(const QTextBlock &block)
|
||||
void TextDocumentLayout::updateReplacmentFormats(const QTextBlock &block,
|
||||
const FontSettings &fontSettings)
|
||||
{
|
||||
if (TextBlockUserData *userData = textUserData(block)) {
|
||||
if (QTextDocument *replacement = userData->replacement()) {
|
||||
const QTextCharFormat replacementFormat = fontSettings.toTextCharFormat(
|
||||
TextStyles{C_TEXT, {C_DISABLED_CODE}});
|
||||
QTextCursor cursor(replacement);
|
||||
cursor.select(QTextCursor::Document);
|
||||
cursor.setCharFormat(fontSettings.toTextCharFormat(C_TEXT));
|
||||
cursor.setPosition(block.length() - 1);
|
||||
cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
|
||||
cursor.setCharFormat(replacementFormat);
|
||||
replacement->firstBlock().layout()->setFormats(block.layout()->formats());
|
||||
}
|
||||
if (QTextDocument *replacement = replacementDocument(block)) {
|
||||
const QTextCharFormat replacementFormat = fontSettings.toTextCharFormat(
|
||||
TextStyles{C_TEXT, {C_DISABLED_CODE}});
|
||||
QTextCursor cursor(replacement);
|
||||
cursor.select(QTextCursor::Document);
|
||||
cursor.setCharFormat(fontSettings.toTextCharFormat(C_TEXT));
|
||||
cursor.setPosition(block.length() - 1);
|
||||
cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
|
||||
cursor.setCharFormat(replacementFormat);
|
||||
replacement->firstBlock().layout()->setFormats(block.layout()->formats());
|
||||
}
|
||||
}
|
||||
|
||||
QString TextDocumentLayout::replacement(const QTextBlock &block)
|
||||
{
|
||||
if (TextBlockUserData *userData = textUserData(block)) {
|
||||
if (QTextDocument *replacement = userData->replacement())
|
||||
return replacement->toPlainText().mid(block.length() - 1);
|
||||
}
|
||||
if (QTextDocument *replacement = replacementDocument(block))
|
||||
return replacement->toPlainText().mid(block.length() - 1);
|
||||
return {};
|
||||
}
|
||||
|
||||
QTextDocument *TextDocumentLayout::replacementDocument(const QTextBlock &block)
|
||||
{
|
||||
TextBlockUserData *userData = textUserData(block);
|
||||
return userData ? userData->replacement() : nullptr;
|
||||
}
|
||||
|
||||
void TextDocumentLayout::requestExtraAreaUpdate()
|
||||
{
|
||||
emit updateExtraArea();
|
||||
@@ -682,10 +684,8 @@ static QRectF replacementBoundingRect(const QTextDocument *replacement)
|
||||
|
||||
QRectF TextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
|
||||
{
|
||||
if (TextBlockUserData *userData = textUserData(block)) {
|
||||
if (auto replacement = userData->replacement())
|
||||
return replacementBoundingRect(replacement);
|
||||
}
|
||||
if (QTextDocument *replacement = replacementDocument(block))
|
||||
return replacementBoundingRect(replacement);
|
||||
|
||||
QRectF boundingRect = QPlainTextDocumentLayout::blockBoundingRect(block);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user