forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user