VolumeStatus: play notification on scroll
Add the machinery to cancel the notification when a new playing a new one (wrapping ca_context_cancel), then use it when scrolling the status icon. Not doing it for the slider because it causes noise, either with the keyboard, with mouse drag or with mouse wheel. https://bugzilla.gnome.org/show_bug.cgi?id=633667
This commit is contained in:
parent
a80ed030ad
commit
a1e019b41a
@ -19,6 +19,8 @@ const _ = Gettext.gettext;
|
|||||||
const VOLUME_MAX = 65536.0; /* PA_VOLUME_NORM */
|
const VOLUME_MAX = 65536.0; /* PA_VOLUME_NORM */
|
||||||
const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
|
const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
|
||||||
|
|
||||||
|
const VOLUME_NOTIFY_ID = 1;
|
||||||
|
|
||||||
function Indicator() {
|
function Indicator() {
|
||||||
this._init.apply(this, arguments);
|
this._init.apply(this, arguments);
|
||||||
}
|
}
|
||||||
@ -87,6 +89,8 @@ Indicator.prototype = {
|
|||||||
this._output.change_is_muted(false);
|
this._output.change_is_muted(false);
|
||||||
this._output.push_volume();
|
this._output.push_volume();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._notifyVolumeChange();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onControlReady: function() {
|
_onControlReady: function() {
|
||||||
@ -193,7 +197,8 @@ Indicator.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_notifyVolumeChange: function() {
|
_notifyVolumeChange: function() {
|
||||||
global.play_theme_sound('audio-volume-change');
|
global.cancel_theme_sound(VOLUME_NOTIFY_ID);
|
||||||
|
global.play_theme_sound(VOLUME_NOTIFY_ID, 'audio-volume-change');
|
||||||
},
|
},
|
||||||
|
|
||||||
_mutedChanged: function(object, param_spec, property) {
|
_mutedChanged: function(object, param_spec, property) {
|
||||||
|
@ -1889,6 +1889,7 @@ shell_global_run_at_leisure (ShellGlobal *global,
|
|||||||
/**
|
/**
|
||||||
* shell_global_play_theme_sound:
|
* shell_global_play_theme_sound:
|
||||||
* @global: the #ShellGlobal
|
* @global: the #ShellGlobal
|
||||||
|
* @id: an id, used to cancel later (0 if not needed)
|
||||||
* @name: the sound name
|
* @name: the sound name
|
||||||
*
|
*
|
||||||
* Plays a simple sound picked according to Freedesktop sound theme.
|
* Plays a simple sound picked according to Freedesktop sound theme.
|
||||||
@ -1896,9 +1897,24 @@ shell_global_run_at_leisure (ShellGlobal *global,
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
shell_global_play_theme_sound (ShellGlobal *global,
|
shell_global_play_theme_sound (ShellGlobal *global,
|
||||||
|
guint id,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
ca_context_play (global->sound_context, 0, CA_PROP_EVENT_ID, name, NULL);
|
ca_context_play (global->sound_context, id, CA_PROP_EVENT_ID, name, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_cancel_theme_sound:
|
||||||
|
* @global: the #ShellGlobal
|
||||||
|
* @id: the id previously passed to shell_global_play_theme_sound()
|
||||||
|
*
|
||||||
|
* Cancels a sound notification.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_global_cancel_theme_sound (ShellGlobal *global,
|
||||||
|
guint id)
|
||||||
|
{
|
||||||
|
ca_context_cancel (global->sound_context, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -140,7 +140,10 @@ void shell_global_run_at_leisure (ShellGlobal *global,
|
|||||||
GDestroyNotify notify);
|
GDestroyNotify notify);
|
||||||
|
|
||||||
void shell_global_play_theme_sound (ShellGlobal *global,
|
void shell_global_play_theme_sound (ShellGlobal *global,
|
||||||
|
guint id,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
void shell_global_cancel_theme_sound (ShellGlobal *global,
|
||||||
|
guint id);
|
||||||
|
|
||||||
void shell_global_init_xdnd (ShellGlobal *global);
|
void shell_global_init_xdnd (ShellGlobal *global);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user