From a89a401087455c520c84f346e61055b668b50654 Mon Sep 17 00:00:00 2001 From: PFiS Date: Sat, 2 Aug 2025 14:19:59 +0800 Subject: osd: animate scrolling (#316) * refactor: make the animation smooth when scrolling the mouse wheel * fix: can't drag * format * fix cursor --------- Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> --- modules/osd/Content.qml | 61 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 18 deletions(-) (limited to 'modules') diff --git a/modules/osd/Content.qml b/modules/osd/Content.qml index 8f78894..a707fb4 100644 --- a/modules/osd/Content.qml +++ b/modules/osd/Content.qml @@ -15,29 +15,54 @@ Column { spacing: Appearance.spacing.normal - VerticalSlider { - icon: { - if (Audio.muted) - return "no_sound"; - if (value >= 0.5) - return "volume_up"; - if (value > 0) - return "volume_down"; - return "volume_mute"; - } - value: Audio.volume - onMoved: Audio.setVolume(value) - + CustomMouseArea { implicitWidth: Config.osd.sizes.sliderWidth implicitHeight: Config.osd.sizes.sliderHeight - } - VerticalSlider { - icon: `brightness_${(Math.round(value * 6) + 1)}` - value: root.monitor?.brightness ?? 0 - onMoved: root.monitor?.setBrightness(value) + onWheel: event => { + if (event.angleDelta.y > 0) + Audio.setVolume(Audio.volume + 0.1); + else if (event.angleDelta.y < 0) + Audio.setVolume(Audio.volume - 0.1); + } + VerticalSlider { + anchors.fill: parent + + icon: { + if (Audio.muted) + return "no_sound"; + if (value >= 0.5) + return "volume_up"; + if (value > 0) + return "volume_down"; + return "volume_mute"; + } + value: Audio.volume + onMoved: Audio.setVolume(value) + } + } + + CustomMouseArea { implicitWidth: Config.osd.sizes.sliderWidth implicitHeight: Config.osd.sizes.sliderHeight + + onWheel: event => { + const monitor = root.monitor; + if (!monitor) + return; + if (event.angleDelta.y > 0) + monitor.setBrightness(monitor.brightness + 0.1); + else if (event.angleDelta.y < 0) + monitor.setBrightness(monitor.brightness - 0.1); + } + + VerticalSlider { + anchors.fill: parent + + icon: `brightness_${(Math.round(value * 6) + 1)}` + value: root.monitor?.brightness ?? 0 + onMoved: root.monitor?.setBrightness(value) + } } } -- cgit v1.2.3-freya