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 <volker.hilsheimer@qt.io>
bb10
David Faure 2022-04-29 11:29:19 +02:00 committed by Volker Hilsheimer
parent 367092d7e0
commit 42cf2a2617
1 changed files with 1 additions and 1 deletions

View File

@ -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);