From b0c1b5b1d4b84c749effefcbaf2dc251e7bb98c7 Mon Sep 17 00:00:00 2001 From: lee Date: Sat, 22 Jun 2024 14:23:38 +0800 Subject: [PATCH] improve QPlainTextEdit paintEvent performance when lots of blocks are set invisible --- src/widgets/widgets/qplaintextedit.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 77279c87..89a24b68 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -1925,15 +1925,14 @@ void QPlainTextEdit::paintEvent(QPaintEvent *e) while (block.isValid()) { - QRectF r = blockBoundingRect(block).translated(offset); - QTextLayout *layout = block.layout(); - if (!block.isVisible()) { - offset.ry() += r.height(); block = block.next(); continue; } + QRectF r = blockBoundingRect(block).translated(offset); + QTextLayout *layout = block.layout(); + if (r.bottom() >= er.top() && r.top() <= er.bottom()) { QTextBlockFormat blockFormat = block.blockFormat(); -- 2.44.0.windows.1