From 42cf2a2617ffd0d563fcd46c5aa5409007e211de Mon Sep 17 00:00:00 2001 From: David Faure Date: Fri, 29 Apr 2022 11:29:19 +0200 Subject: [PATCH] QWidgetTextControl: don't clear() a new empty document Before: 0.063 msecs per iteration After: 0.054 msecs per iteration clear() takes time because: 1) QTextDocumentLayout::documentChanged() => doLayout() => layoutFrame() 2) QTextDocumentPrivate::init() => insertBlock() => finishEdit() => QTextDocumentLayout::documentChanged() => layoutStep() => ... => doLayout() again Pick-to: 6.3 6.2 Change-Id: I7a13164d06a1ed77226f2b9d7d12e69ce5b31dfe Reviewed-by: Volker Hilsheimer --- src/widgets/widgets/qwidgettextcontrol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index ad8e79f4e2..e73975f9e2 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -412,11 +412,11 @@ void QWidgetTextControlPrivate::setContent(Qt::TextFormat format, const QString if (!doc) { if (document) { doc = document; - clearDocument = false; } else { palette = QApplication::palette("QWidgetTextControl"); doc = new QTextDocument(q); } + clearDocument = false; _q_documentLayoutChanged(); cursor = QTextCursor(doc);