diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-03-13 01:01:04 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-03-13 10:10:09 +0100 |
commit | 76be4abbbcfb2fbb14ce532413e0895198e7f0f1 (patch) | |
tree | 5d6ca9c4425df15a93b6f74dc8e4dbb38db74d91 /src/quick/items/qquicktextnodeengine.cpp | |
parent | 587d789fa5929f462b5744ba33a25db6c77b36fc (diff) | |
parent | 70d726e91e4ef27002b2271805de19077e25809c (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
src/qml/compiler/qv4codegen.cpp
src/qml/animations/qsequentialanimationgroupjob.cpp
Change-Id: I8b76e509fd7c8599d4cef25181d790ee28edab54
Diffstat (limited to 'src/quick/items/qquicktextnodeengine.cpp')
-rw-r--r-- | src/quick/items/qquicktextnodeengine.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/quick/items/qquicktextnodeengine.cpp b/src/quick/items/qquicktextnodeengine.cpp index d84932b8d0..a1b5eb1faf 100644 --- a/src/quick/items/qquicktextnodeengine.cpp +++ b/src/quick/items/qquicktextnodeengine.cpp @@ -967,9 +967,14 @@ void QQuickTextNodeEngine::addTextBlock(QTextDocument *textDocument, const QText QVarLengthArray<QTextLayout::FormatRange> colorChanges; mergeFormats(block.layout(), &colorChanges); - QPointF blockPosition = textDocument->documentLayout()->blockBoundingRect(block).topLeft() + position; + const QTextCharFormat charFormat = block.charFormat(); + const QRectF blockBoundingRect = textDocument->documentLayout()->blockBoundingRect(block).translated(position); + + if (charFormat.background().style() != Qt::NoBrush) + m_backgrounds.append(qMakePair(blockBoundingRect, charFormat.background().color())); + if (QTextList *textList = block.textList()) { - QPointF pos = blockPosition; + QPointF pos = blockBoundingRect.topLeft(); QTextLayout *layout = block.layout(); if (layout->lineCount() > 0) { QTextLine firstLine = layout->lineAt(0); @@ -982,7 +987,6 @@ void QQuickTextNodeEngine::addTextBlock(QTextDocument *textDocument, const QText if (block.textDirection() == Qt::RightToLeft) pos.rx() += textRect.width(); - const QTextCharFormat charFormat = block.charFormat(); QFont font(charFormat.font()); QFontMetricsF fontMetrics(font); QTextListFormat listFormat = textList->format(); @@ -1043,11 +1047,11 @@ void QQuickTextNodeEngine::addTextBlock(QTextDocument *textDocument, const QText int fontHeight = fontMetrics.descent() + fontMetrics.ascent(); int valign = charFormat.verticalAlignment(); if (valign == QTextCharFormat::AlignSuperScript) - setPosition(QPointF(blockPosition.x(), blockPosition.y() - fontHeight / 2)); + setPosition(QPointF(blockBoundingRect.x(), blockBoundingRect.y() - fontHeight / 2)); else if (valign == QTextCharFormat::AlignSubScript) - setPosition(QPointF(blockPosition.x(), blockPosition.y() + fontHeight / 6)); + setPosition(QPointF(blockBoundingRect.x(), blockBoundingRect.y() + fontHeight / 6)); else - setPosition(blockPosition); + setPosition(blockBoundingRect.topLeft()); if (text.contains(QChar::ObjectReplacementCharacter)) { QTextFrame *frame = qobject_cast<QTextFrame *>(textDocument->objectForFormat(charFormat)); @@ -1101,7 +1105,7 @@ void QQuickTextNodeEngine::addTextBlock(QTextDocument *textDocument, const QText #if QT_CONFIG(im) if (preeditLength >= 0 && textPos <= block.position() + preeditPosition) { - setPosition(blockPosition); + setPosition(blockBoundingRect.topLeft()); textPos = block.position() + preeditPosition; QTextLine line = block.layout()->lineForTextPosition(preeditPosition); if (!currentLine().isValid() |