Editor: Fix self recursive update

The update rect should be identical to the calculated line rect when
repainting the current line highlight. And the offset must not be
calculated into the line rect since we just want to repaint the complete
viewport width.

Fixes: QTCREATORBUG-23647
Change-Id: I0656f0fee4823c8ff55c70b2a4cd69f0183e141d
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2020-02-26 08:07:28 +01:00
parent 8625bbfe5a
commit af52b65d6a

View File

@@ -4334,16 +4334,12 @@ void TextEditorWidgetPrivate::paintCurrentLineHighlight(const PaintEventData &da
QRectF lineRect = data.block.layout()->lineForTextPosition(data.textCursor.positionInBlock()).rect();
lineRect.moveTop(lineRect.top() + blockRect.top());
lineRect.setLeft(0);
lineRect.setRight(data.viewportRect.width() - data.offset.x());
lineRect.setRight(data.viewportRect.width());
QColor color = m_document->fontSettings().toTextCharFormat(C_CURRENT_LINE).background().color();
// set alpha, otherwise we cannot see block highlighting and find scope underneath
color.setAlpha(128);
if (!data.eventRect.contains(lineRect.toRect())) {
QRect updateRect = data.eventRect;
updateRect.setLeft(0);
updateRect.setRight(data.viewportRect.width() - int(data.offset.x()));
q->viewport()->update(updateRect);
}
if (!data.eventRect.contains(lineRect.toRect()))
q->viewport()->update(lineRect.toRect());
painter.fillRect(lineRect, color);
}