summaryrefslogtreecommitdiff
path: root/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch')
-rw-r--r--kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch
new file mode 100644
index 000000000000..2a01651f8814
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch
@@ -0,0 +1,93 @@
+From 91dcf51a0cda029519c917c93f330a6ced531784 Mon Sep 17 00:00:00 2001
+From: Quinten Kock <quintenkock@gmail.com>
+Date: Wed, 21 Jun 2023 21:03:15 +0200
+Subject: [PATCH] Put volume change logic centrally in VolumeSlider
+
+This commit puts the volume change logic in one place, to prevent
+issues related to changing the volume twice.
+
+Without this commit there are issues such as dragging from 100%/100% to
+100%/50% and then the mixer changing the volume to 50%/25%.
+
+I'm not sure I'm entirely happy with this, but it seems to work.
+
+
+(cherry picked from commit fec28d12c086a13038f6c40f10d3c25bb7517660)
+---
+ src/kcm/package/contents/ui/DeviceListItem.qml | 18 ++----------------
+ src/kcm/package/contents/ui/VolumeSlider.qml | 16 +++++++++++++++-
+ 2 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/src/kcm/package/contents/ui/DeviceListItem.qml b/src/kcm/package/contents/ui/DeviceListItem.qml
+index 09feea71..ab0ce6f0 100644
+--- a/src/kcm/package/contents/ui/DeviceListItem.qml
++++ b/src/kcm/package/contents/ui/DeviceListItem.qml
+@@ -178,12 +178,6 @@ ColumnLayout {
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignVCenter
+ visible: !balanceButton.checked
+-
+- value: Volume
+- onMoved: {
+- Volume = value;
+- Muted = (value === 0);
+- }
+ }
+
+ Repeater {
+@@ -203,16 +197,8 @@ ColumnLayout {
+ Layout.fillWidth: true
+
+ value: ChannelVolumes[index]
+- onMoved: {
+- delegate.pulseObject.setChannelVolume(index, value);
+-
+- // volumes are updated async, so we'll just assume it worked here
+- let newChannelVolumes = ChannelVolumes;
+- newChannelVolumes[index] = value;
+- Muted = newChannelVolumes.every((volume) => {
+- return volume === 0;
+- });
+- }
++
++ channel: index
+ }
+ }
+ }
+diff --git a/src/kcm/package/contents/ui/VolumeSlider.qml b/src/kcm/package/contents/ui/VolumeSlider.qml
+index c2cf0a31..fc0c4a6c 100644
+--- a/src/kcm/package/contents/ui/VolumeSlider.qml
++++ b/src/kcm/package/contents/ui/VolumeSlider.qml
+@@ -19,6 +19,8 @@ RowLayout {
+
+ property alias value: slider.value
+
++ property int channel: -1
++
+ QQC2.Slider {
+ id: slider
+
+@@ -35,7 +37,19 @@ RowLayout {
+ onMoved: {
+ // Since it is not possible to use stepSize without tickmarks being displayed, force 1% steps
+ // Unfortunately without stepSize, it cannot snap visually whilst scrolling by changing value instead of Volume as it breaks the binding
+- Volume = Math.round(value * 100 / PulseAudio.NormalVolume) * PulseAudio.NormalVolume / 100
++ let volume = Math.round(value * 100 / PulseAudio.NormalVolume) * PulseAudio.NormalVolume / 100
++ if (channel == -1) {
++ Volume = volume
++ Muted = volume === 0;
++ } else {
++ delegate.pulseObject.setChannelVolume(channel, volume);
++
++ // volumes are updated async, so we'll just assume it worked here
++ let newChannelVolumes = ChannelVolumes;
++ newChannelVolumes[index] = value;
++ Muted = newChannelVolumes.every(volume => volume === 0);
++ }
++
+ sliderRow.moved()
+ }
+
+--
+GitLab
+