qt6-base: update to 6.2.1.

This commit is contained in:
John 2021-10-26 18:40:06 +02:00
parent 234099014a
commit 02330a5ef2
2 changed files with 55 additions and 2 deletions

View file

@ -0,0 +1,53 @@
From ffc9323671d045e3566980d9ed4567f071004e65 Mon Sep 17 00:00:00 2001
From: Volker Hilsheimer <volker.hilsheimer@qt.io>
Date: Thu, 28 Oct 2021 16:55:33 +0200
Subject: Fix performance regression when avoiding scrollbar flipping
Amends 6c4dc722cb9bf765904feefff4fb00bdb0b3dc9f.
Don't search for the optimal size of the scrollarea's widget if it can't
be found anyway. Try the size with scrollbar first, which covers the
vast majority of sizes.
Optimizing the loop with e.g. a binary search adds no value, as the size
is often just a pixel too small.
Since we can't rely on the number of height-for-width calls, we can't
meaningfully test this behavior. The number of calls is still very high
during showing and resizing; optimizing this further is for a separate
commit.
Fixes: QTBUG-97811
Pick-to: 6.2 5.15
Change-Id: If145302e6414b32cf1ce7251ff33b0039f584867
Reviewed-by: Jonas Kvinge <jonas@jkvinge.net>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
---
src/widgets/widgets/qscrollarea.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp
index f880240ea7..e8fdadb648 100644
--- a/src/widgets/widgets/qscrollarea.cpp
+++ b/src/widgets/widgets/qscrollarea.cpp
@@ -203,10 +203,13 @@ void QScrollAreaPrivate::updateScrollBars()
if (vbarpolicy == Qt::ScrollBarAsNeeded) {
int vbarWidth = vbar->sizeHint().width();
QSize m_hfw = m.expandedTo(min).boundedTo(max);
- while (h > m.height() && vbarWidth) {
- --vbarWidth;
- --m_hfw.rwidth();
- h = widget->heightForWidth(m_hfw.width());
+ // is there any point in searching?
+ if (widget->heightForWidth(m_hfw.width() - vbarWidth) <= m.height()) {
+ while (h > m.height() && vbarWidth) {
+ --vbarWidth;
+ --m_hfw.rwidth();
+ h = widget->heightForWidth(m_hfw.width());
+ }
}
max = QSize(m_hfw.width(), qMax(m_hfw.height(), h));
}
--
cgit v1.2.1

View file

@ -1,6 +1,6 @@
# Template file for 'qt6-base'
pkgname=qt6-base
version=6.2.0
version=6.2.1
revision=1
wrksrc="qtbase-everywhere-src-${version}"
build_style=cmake
@ -29,7 +29,7 @@ maintainer="John <me@johnnynator.dev>"
license="GPL-3.0-only WITH Qt-GPL-exception-1.0, LGPL-3.0-only, GPL-2.0-or-later"
homepage="https://www.qt.io"
distfiles="https://download.qt.io/official_releases/qt/${version%.*}/${version}/submodules/qtbase-everywhere-src-${version}.tar.xz"
checksum=fdfff0716d093bcb6bcd53746ce1d3c9701a6bf3326d47813866d43949b47769
checksum=2c5f07b5c3ea27d3fc1a46686ea3fb6724f94dddf1fb007de3eb0bdb87429079
python_version=3
if [ "$CROSS_BUILD" ]; then