From 95d1ec87b1376305ca97769e0de7befd5fa510e8 Mon Sep 17 00:00:00 2001 From: Devin Lin Date: Sat, 18 Mar 2023 20:05:44 -0700 Subject: [PATCH] actiondrawer: Smoothen the brightness slider so that it doesn't jump when sending events --- .../quicksettings/BrightnessItem.qml | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/components/mobileshell/qml/actiondrawer/quicksettings/BrightnessItem.qml b/components/mobileshell/qml/actiondrawer/quicksettings/BrightnessItem.qml index a7bc8a16..0245eb64 100644 --- a/components/mobileshell/qml/actiondrawer/quicksettings/BrightnessItem.qml +++ b/components/mobileshell/qml/actiondrawer/quicksettings/BrightnessItem.qml @@ -35,7 +35,9 @@ Item { } onScreenBrightnessChanged: { - brightnessSlider.value = root.screenBrightness + if (!brightnessSlider.pressed && !brightnessTimer.running) { + brightnessSlider.value = root.screenBrightness; + } if (!disableBrightnessUpdate) { var service = pmSource.serviceForSource("PowerDevil"); @@ -62,6 +64,22 @@ Item { } onDataChanged: root.updateBrightnessUI() } + + // we want to smoothen the slider so it doesn't jump immediately after you let go + Timer { + id: brightnessTimer + interval: 500 + onTriggered: { + brightnessSlider.value = root.screenBrightness; + } + } + + // send brightness events a maximum of 5 times a second + Timer { + id: sendEventTimer + interval: 200 + onTriggered: root.screenBrightness = brightnessSlider.value + } RowLayout { id: brightnessRow @@ -87,7 +105,20 @@ Item { to: root.maximumScreenBrightness value: root.screenBrightness - onMoved: root.screenBrightness = value; + onMoved: { + if (!sendEventTimer.running) { + root.screenBrightness = value; + sendEventTimer.restart(); + } + } + + onPressedChanged: { + if (!pressed) { + brightnessTimer.restart(); + } else { + brightnessTimer.stop(); + } + } } PlasmaCore.IconItem {