Editor: Do not jump over invisible blocks in paintEvent sub routine

The paintEvent relies on invisible blocks to find
collapsed blocks and paint the collapsed block popup.

Task-number: QTCREATORBUG-21040
Change-Id: Id50e8602722fd807e57fa008cf9fd8106ffdafe1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2018-09-28 09:54:44 +02:00
parent 8d609692b3
commit b6b756e737

View File

@@ -4577,7 +4577,6 @@ void TextEditorWidgetPrivate::paintReplacement(PaintEventData &data, QPainter &p
qreal top) const
{
QTextBlock nextBlock = data.block.next();
QTextBlock nextVisibleBlock = TextEditor::nextVisibleBlock(data.block, data.doc);
if (nextBlock.isValid() && !nextBlock.isVisible() && q->replacementVisible(data.block.blockNumber())) {
const bool selectThis = (data.textCursor.hasSelection()
@@ -4615,13 +4614,13 @@ void TextEditorWidgetPrivate::paintReplacement(PaintEventData &data, QPainter &p
replacement.prepend(nextBlock.text().trimmed().left(1));
}
data.block = nextVisibleBlock.previous();
if (!data.block.isValid())
data.block = data.doc->lastBlock();
QTextBlock nextVisibleBlock = TextEditor::nextVisibleBlock(data.block, data.doc);
if (!nextVisibleBlock.isValid())
nextVisibleBlock = data.doc->lastBlock();
if (TextBlockUserData *blockUserData = TextDocumentLayout::testUserData(data.block)) {
if (TextBlockUserData *blockUserData = TextDocumentLayout::testUserData(nextVisibleBlock)) {
if (blockUserData->foldingEndIncluded()) {
QString right = data.block.text().trimmed();
QString right = nextVisibleBlock.text().trimmed();
if (right.endsWith(QLatin1Char(';'))) {
right.chop(1);
right = right.trimmed();