TextEditor: fix painting editor overlay in blocks with preedit text

Task-number: QTCREATORBUG-29134
Change-Id: I7049422688fccb421984463e4114546533da55cb
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
David Schulz
2023-06-07 12:16:37 +02:00
parent 827d6e66f8
commit 32c97a10d0

View File

@@ -159,6 +159,9 @@ QPainterPath TextEditorOverlay::createSelectionPath(const QTextCursor &begin, co
int beginChar = 0;
if (block == begin.block()) {
beginChar = begin.positionInBlock();
const QString preeditAreaText = begin.block().layout()->preeditAreaText();
if (!preeditAreaText.isEmpty() && beginChar >= begin.block().layout()->preeditAreaPosition())
beginChar += preeditAreaText.length();
QTextLine line = blockLayout->lineForTextPosition(beginChar);
QTC_ASSERT(line.isValid(), return {});
firstLine = line.lineNumber();
@@ -171,6 +174,9 @@ QPainterPath TextEditorOverlay::createSelectionPath(const QTextCursor &begin, co
int endChar = -1;
if (block == end.block()) {
endChar = end.positionInBlock();
const QString preeditAreaText = end.block().layout()->preeditAreaText();
if (!preeditAreaText.isEmpty() && endChar >= end.block().layout()->preeditAreaPosition())
endChar += preeditAreaText.length();
QTextLine line = blockLayout->lineForTextPosition(endChar);
QTC_ASSERT(line.isValid(), return {});
lastLine = line.lineNumber();