From 7ec5db7e050505bbcb04a70edacec4075389a2df Mon Sep 17 00:00:00 2001 From: Xavi Garcia Mena Date: Fri, 4 Dec 2015 11:46:27 +0100 Subject: Setting user selected volume when pressing OK in the high volume dialog --- src/service.vala | 12 +++++++----- src/volume-control.vala | 6 ++++++ 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/service.vala b/src/service.vala index 923aba2..312fec5 100644 --- a/src/service.vala +++ b/src/service.vala @@ -629,11 +629,13 @@ public class IndicatorSound.Service: Object { warn_notification.add_action ("ok", _("OK"), (n, a) => { stop_clamp_to_high_timeout(); volume_control.approve_high_volume (); - if (_pre_warn_volume != null) { - var tmp = _pre_warn_volume; - _pre_warn_volume = null; - volume_control.volume = tmp; - } + // restore the volume the user introduced + VolumeControl.Volume vol = new VolumeControl.Volume(); + vol.volume = volume_control.get_pre_clamped_volume(); + vol.reason = VolumeControl.VolumeReasons.USER_KEYPRESS; + _pre_warn_volume = null; + volume_control.volume = vol; + waiting_user_approve_warn = false; }); warn_notification.add_action ("cancel", _("Cancel"), (n, a) => { diff --git a/src/volume-control.vala b/src/volume-control.vala index 30dcfcf..7117990 100644 --- a/src/volume-control.vala +++ b/src/volume-control.vala @@ -54,6 +54,7 @@ public abstract class VolumeControl : Object public virtual bool is_playing { get { return false; } } public virtual VolumeControl.ActiveOutput active_output { get { return VolumeControl.ActiveOutput.SPEAKERS; } } private Volume _volume; + private double _pre_clamp_volume; public virtual Volume volume { get { return _volume; } set { } } public virtual double mic_volume { get { return 0.0; } set { } } public virtual double max_volume { get { return 1.0; } protected set { } } @@ -70,6 +71,11 @@ public abstract class VolumeControl : Object v.volume = unclamped.clamp (0.0, this.max_volume); v.reason = reason; this.volume = v; + _pre_clamp_volume = unclamped; + } + + public double get_pre_clamped_volume () { + return _pre_clamp_volume; } public signal void active_output_changed (VolumeControl.ActiveOutput active_output); -- cgit v1.2.3