Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-kirigami for openSUSE:Factory checked in at 2025-05-15 16:59:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-kirigami (Old) and /work/SRC/openSUSE:Factory/.kf6-kirigami.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-kirigami" Thu May 15 16:59:41 2025 rev:18 rq:1277240 version:6.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-kirigami/kf6-kirigami.changes 2025-05-12 16:47:08.040278754 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-kirigami.new.30101/kf6-kirigami.changes 2025-05-15 17:00:09.455133976 +0200 @@ -1,0 +2,9 @@ +Tue May 13 16:10:30 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Add upstream changes: + * 0001-WheelHandler-remove-std-clamp-assert-crash.patch + * 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch + * 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch + * 0005-WheelHandler-use-std-min-and-std-max-instead-of-qMin.patch + +------------------------------------------------------------------- New: ---- 0001-WheelHandler-remove-std-clamp-assert-crash.patch 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch 0005-WheelHandler-use-std-min-and-std-max-instead-of-qMin.patch BETA DEBUG BEGIN: New:- Add upstream changes: * 0001-WheelHandler-remove-std-clamp-assert-crash.patch * 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch New: * 0001-WheelHandler-remove-std-clamp-assert-crash.patch * 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch * 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch New: * 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch * 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch * 0005-WheelHandler-use-std-min-and-std-max-instead-of-qMin.patch New: * 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch * 0005-WheelHandler-use-std-min-and-std-max-instead-of-qMin.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-kirigami.spec ++++++ --- /var/tmp/diff_new_pack.oEaP31/_old 2025-05-15 17:00:10.523178782 +0200 +++ /var/tmp/diff_new_pack.oEaP31/_new 2025-05-15 17:00:10.527178950 +0200 @@ -35,6 +35,11 @@ Source1: %{rname}-%{version}.tar.xz.sig Source2: frameworks.keyring %endif +# PATCH-FIX-UPSTREAM +Patch0: 0001-WheelHandler-remove-std-clamp-assert-crash.patch +Patch1: 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch +Patch2: 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch +Patch3: 0005-WheelHandler-use-std-min-and-std-max-instead-of-qMin.patch BuildRequires: doxygen BuildRequires: kf6-extra-cmake-modules >= %{_kf6_bugfix_version} BuildRequires: qt6-gui-private-devel >= %{qt6_version} ++++++ 0001-WheelHandler-remove-std-clamp-assert-crash.patch ++++++ >From d373ee15e51a42a110309baed6c321126d5acfeb Mon Sep 17 00:00:00 2001 From: Noah Davis <noaha...@gmail.com> Date: Mon, 12 May 2025 17:24:00 -0400 Subject: [PATCH 1/5] WheelHandler: remove std::clamp assert crash BUG: 503703 --- src/wheelhandler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wheelhandler.cpp b/src/wheelhandler.cpp index 0af0bad7..93991089 100644 --- a/src/wheelhandler.cpp +++ b/src/wheelhandler.cpp @@ -481,9 +481,9 @@ bool WheelHandler::scrollFlickable(QPointF pixelDelta, QPointF angleDelta, Qt::K qreal minExtent = leadingMargin - originPos; qreal maxExtent = size - (contentSize + trailingMargin + originPos); - - qreal newContentPos = - std::clamp((animation.state() == QPropertyAnimation::Running ? animation.endValue().toReal() : contentPos) - change, -minExtent, -maxExtent); + qreal newContentPos = (animation.state() == QPropertyAnimation::Running ? animation.endValue().toReal() : contentPos) - change; + // bound the values without asserts + newContentPos = qMax(-minExtent, qMin(newContentPos, -maxExtent)); // Flickable::pixelAligned rounds the position, so round to mimic that behavior. // Rounding prevents fractional positioning from causing text to be -- 2.49.0 ++++++ 0002-WheelHandler-Only-apply-scrollview-event-filtering-t.patch ++++++ >From 0b085580b3e4a8d6407a0cd35ee5a622226a1dfa Mon Sep 17 00:00:00 2001 From: Noah Davis <noaha...@gmail.com> Date: Mon, 12 May 2025 17:28:28 -0400 Subject: [PATCH 2/5] WheelHandler: Only apply scrollview event filtering to keys Matches Qt Quick ScrollView behavior a bit more closely since ScrollView only directly handles arrow key events. --- src/wheelhandler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/wheelhandler.cpp b/src/wheelhandler.cpp index 93991089..ef943427 100644 --- a/src/wheelhandler.cpp +++ b/src/wheelhandler.cpp @@ -601,6 +601,12 @@ bool WheelHandler::eventFilter(QObject *watched, QEvent *event) return false; } + // We only process keyboard events for QQuickScrollView. + const auto eventType = event->type(); + if (item == m_scrollView && eventType != QEvent::KeyPress && eventType != QEvent::KeyRelease) { + return false; + } + qreal contentWidth = 0; qreal contentHeight = 0; qreal pageWidth = 0; @@ -613,7 +619,7 @@ bool WheelHandler::eventFilter(QObject *watched, QEvent *event) } // The code handling touch, mouse and hover events is mostly copied/adapted from QQuickScrollView::childMouseEventFilter() - switch (event->type()) { + switch (eventType) { case QEvent::Wheel: { // QQuickScrollBar::interactive handling Matches behavior in QQuickScrollView::eventFilter() if (m_filterMouseEvents) { -- 2.49.0 ++++++ 0004-WheelHandler-remove-std-clamp-assert-crash-part-2.patch ++++++ >From 54a92465b5ddcd55a5dfdd16c5215ad0769615fc Mon Sep 17 00:00:00 2001 From: Noah Davis <noaha...@gmail.com> Date: Mon, 12 May 2025 20:10:01 -0400 Subject: [PATCH 4/5] WheelHandler: remove std::clamp assert crash part 2 BUG: 503703 --- src/wheelhandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wheelhandler.cpp b/src/wheelhandler.cpp index ef943427..b77646ad 100644 --- a/src/wheelhandler.cpp +++ b/src/wheelhandler.cpp @@ -525,7 +525,7 @@ bool WheelHandler::scrollFlickable(QPointF pixelDelta, QPointF angleDelta, Qt::K qreal absPixelDelta = std::abs(newPos - oldPos); int duration = absPixelDelta * devicePixelRatio > 2 // - ? std::clamp(qRound(absPixelDelta * m_units->longDuration() / stepSize), qCeil(1000.0 / 60.0 * 3), m_units->longDuration()) + ? qMax(qCeil(1000.0 / 60.0 * 3), qMin(qRound(absPixelDelta * m_units->longDuration() / stepSize), m_units->longDuration())) : 0; animation.setDuration(duration <= qCeil(1000.0 / refreshRate * 2) ? 0 : duration); if (animation.duration() > 0) { -- 2.49.0 ++++++ 0005-WheelHandler-use-std-min-and-std-max-instead-of-qMin.patch ++++++ >From e371f2ece21570342de9eb8a58e3b26f84380705 Mon Sep 17 00:00:00 2001 From: Noah Davis <noaha...@gmail.com> Date: Tue, 13 May 2025 09:57:19 -0400 Subject: [PATCH 5/5] WheelHandler: use std::min and std::max instead of qMin and qMax --- src/wheelhandler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wheelhandler.cpp b/src/wheelhandler.cpp index b77646ad..68036bc8 100644 --- a/src/wheelhandler.cpp +++ b/src/wheelhandler.cpp @@ -483,7 +483,7 @@ bool WheelHandler::scrollFlickable(QPointF pixelDelta, QPointF angleDelta, Qt::K qreal maxExtent = size - (contentSize + trailingMargin + originPos); qreal newContentPos = (animation.state() == QPropertyAnimation::Running ? animation.endValue().toReal() : contentPos) - change; // bound the values without asserts - newContentPos = qMax(-minExtent, qMin(newContentPos, -maxExtent)); + newContentPos = std::max(-minExtent, std::min(newContentPos, -maxExtent)); // Flickable::pixelAligned rounds the position, so round to mimic that behavior. // Rounding prevents fractional positioning from causing text to be @@ -525,7 +525,7 @@ bool WheelHandler::scrollFlickable(QPointF pixelDelta, QPointF angleDelta, Qt::K qreal absPixelDelta = std::abs(newPos - oldPos); int duration = absPixelDelta * devicePixelRatio > 2 // - ? qMax(qCeil(1000.0 / 60.0 * 3), qMin(qRound(absPixelDelta * m_units->longDuration() / stepSize), m_units->longDuration())) + ? std::max(qCeil(1000.0 / 60.0 * 3), std::min(qRound(absPixelDelta * m_units->longDuration() / stepSize), m_units->longDuration())) : 0; animation.setDuration(duration <= qCeil(1000.0 / refreshRate * 2) ? 0 : duration); if (animation.duration() > 0) { -- 2.49.0