summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp7
-rw-r--r--tests/benchmarks/benchmarks.pro1
-rw-r--r--tests/benchmarks/widgets/widgets.pro3
-rw-r--r--tests/benchmarks/widgets/widgets/qtextbrowser/main.cpp56
-rw-r--r--tests/benchmarks/widgets/widgets/qtextbrowser/qtextbrowser.pro6
-rw-r--r--tests/benchmarks/widgets/widgets/widgets.pro3
6 files changed, 71 insertions, 5 deletions
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index 0c8904b4c5..8ad2d85e7c 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -2921,11 +2921,11 @@ void QTextDocumentLayout::documentChanged(int from, int oldLength, int length)
{
Q_D(QTextDocumentLayout);
- QTextBlock startIt = document()->findBlock(from);
+ QTextBlock blockIt = document()->findBlock(from);
QTextBlock endIt = document()->findBlock(qMax(0, from + length - 1));
if (endIt.isValid())
endIt = endIt.next();
- for (QTextBlock blockIt = startIt; blockIt.isValid() && blockIt != endIt; blockIt = blockIt.next())
+ for (; blockIt.isValid() && blockIt != endIt; blockIt = blockIt.next())
blockIt.clearLayout();
if (d->docPrivate->pageSize.isNull())
@@ -2967,9 +2967,6 @@ void QTextDocumentLayout::documentChanged(int from, int oldLength, int length)
d->insideDocumentChange = false;
- for (QTextBlock blockIt = startIt; blockIt.isValid() && blockIt != endIt; blockIt = blockIt.next())
- emit updateBlock(blockIt);
-
if (d->showLayoutProgress) {
const QSizeF newSize = dynamicDocumentSize();
if (newSize != d->lastReportedSize) {
diff --git a/tests/benchmarks/benchmarks.pro b/tests/benchmarks/benchmarks.pro
index 8ee8d017ab..9e288f7aa2 100644
--- a/tests/benchmarks/benchmarks.pro
+++ b/tests/benchmarks/benchmarks.pro
@@ -7,6 +7,7 @@ SUBDIRS = \
qtHaveModule(dbus): SUBDIRS += dbus
qtHaveModule(network): SUBDIRS += network
qtHaveModule(gui): SUBDIRS += gui
+qtHaveModule(widgets): SUBDIRS += widgets
check-trusted.CONFIG += recursive
QMAKE_EXTRA_TARGETS += check-trusted
diff --git a/tests/benchmarks/widgets/widgets.pro b/tests/benchmarks/widgets/widgets.pro
new file mode 100644
index 0000000000..8fe49ff2c6
--- /dev/null
+++ b/tests/benchmarks/widgets/widgets.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+ widgets \
diff --git a/tests/benchmarks/widgets/widgets/qtextbrowser/main.cpp b/tests/benchmarks/widgets/widgets/qtextbrowser/main.cpp
new file mode 100644
index 0000000000..e469ddcb5b
--- /dev/null
+++ b/tests/benchmarks/widgets/widgets/qtextbrowser/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QDebug>
+#include <QTextBrowser>
+#include <qtest.h>
+
+class tst_QTextBrowser : public QObject
+{
+ Q_OBJECT
+private slots:
+ void largeDocumentsLazyLayout();
+};
+
+void tst_QTextBrowser::largeDocumentsLazyLayout()
+{
+ QString sl;
+ for (int i = 0; i < 150000; ++i) {
+ sl.append("long long text\n");
+ }
+
+ QBENCHMARK {
+ QTextBrowser browser;
+ browser.setPlainText(sl);
+ browser.show();
+ }
+}
+
+QTEST_MAIN(tst_QTextBrowser)
+
+#include "main.moc"
diff --git a/tests/benchmarks/widgets/widgets/qtextbrowser/qtextbrowser.pro b/tests/benchmarks/widgets/widgets/qtextbrowser/qtextbrowser.pro
new file mode 100644
index 0000000000..d4a533b335
--- /dev/null
+++ b/tests/benchmarks/widgets/widgets/qtextbrowser/qtextbrowser.pro
@@ -0,0 +1,6 @@
+QT += testlib widgets
+
+TEMPLATE = app
+TARGET = tst_bench_QTextBrowser
+
+SOURCES += main.cpp
diff --git a/tests/benchmarks/widgets/widgets/widgets.pro b/tests/benchmarks/widgets/widgets/widgets.pro
new file mode 100644
index 0000000000..593413a770
--- /dev/null
+++ b/tests/benchmarks/widgets/widgets/widgets.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+ qtextbrowser \