diff options
Diffstat (limited to 'kde-frameworks/qqc2-desktop-style/files/qqc2-desktop-style-5.96.0-fix-precision.patch')
-rw-r--r-- | kde-frameworks/qqc2-desktop-style/files/qqc2-desktop-style-5.96.0-fix-precision.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/kde-frameworks/qqc2-desktop-style/files/qqc2-desktop-style-5.96.0-fix-precision.patch b/kde-frameworks/qqc2-desktop-style/files/qqc2-desktop-style-5.96.0-fix-precision.patch new file mode 100644 index 000000000000..36705ce0c8b6 --- /dev/null +++ b/kde-frameworks/qqc2-desktop-style/files/qqc2-desktop-style-5.96.0-fix-precision.patch @@ -0,0 +1,70 @@ +From efb795efbe0579cb30cc042d61214c139c5fb110 Mon Sep 17 00:00:00 2001 +From: ivan tkachenko <me@ratijas.tk> +Date: Fri, 22 Jul 2022 20:31:48 +0300 +Subject: [PATCH] ProgressBar,Slider: Adapt great precision to the harsh + reality + +Test case: `to` values >= 214749 should work. + +BUG: 455339 +--- + org.kde.desktop/ProgressBar.qml | 10 +++++++--- + org.kde.desktop/Slider.qml | 12 ++++++++---- + 2 files changed, 15 insertions(+), 7 deletions(-) + +diff --git a/org.kde.desktop/ProgressBar.qml b/org.kde.desktop/ProgressBar.qml +index 18d879b..77beb1b 100644 +--- a/org.kde.desktop/ProgressBar.qml ++++ b/org.kde.desktop/ProgressBar.qml +@@ -22,11 +22,15 @@ T.ProgressBar { + contentItem: Item {} + + background: StylePrivate.StyleItem { ++ // Rescale for extra precision. Adapts to the range of `from` & `to` to avoid integer overflow. ++ property int factor: (Math.abs(controlRoot.from) < 100000 && Math.abs(controlRoot.to) < 100000) ++ ? 10000 : 1 ++ + elementType: "progressbar" + control: controlRoot +- maximum: indeterminate ? 0 : 10000 * controlRoot.to +- minimum: indeterminate ? 0 : 10000 * controlRoot.from +- value: indeterminate ? 0 : 10000 * controlRoot.value ++ maximum: indeterminate ? 0 : factor * controlRoot.to ++ minimum: indeterminate ? 0 : factor * controlRoot.from ++ value: indeterminate ? 0 : factor * controlRoot.value + horizontal: true + enabled: controlRoot.enabled + +diff --git a/org.kde.desktop/Slider.qml b/org.kde.desktop/Slider.qml +index 58bc99a..49b8ccb 100644 +--- a/org.kde.desktop/Slider.qml ++++ b/org.kde.desktop/Slider.qml +@@ -28,6 +28,10 @@ T.Slider { + snapMode: T.Slider.SnapOnRelease + + background: StylePrivate.StyleItem { ++ // Rescale for extra precision. Adapts to the range of `from` & `to` to avoid integer overflow. ++ property int factor: (Math.abs(controlRoot.from) < 100000 && Math.abs(controlRoot.to) < 100000) ++ ? 10000 : 1 ++ + control: controlRoot + elementType: "slider" + sunken: controlRoot.pressed +@@ -36,10 +40,10 @@ T.Slider { + contentHeight: horizontal ? (Kirigami.Settings.tabletMode ? 24 : 22) : controlRoot.implicitHeight + anchors.verticalCenter: controlRoot.verticalCenter + +- maximum: 10000 * controlRoot.to +- minimum: 10000 * controlRoot.from +- step: 10000 * controlRoot.stepSize +- value: 10000 * controlRoot.value ++ maximum: factor * controlRoot.to ++ minimum: factor * controlRoot.from ++ step: factor * controlRoot.stepSize ++ value: factor * controlRoot.value + horizontal: controlRoot.orientation === Qt.Horizontal + enabled: controlRoot.enabled + hasFocus: controlRoot.activeFocus +-- +GitLab + |