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:
Giovanni Campagna 2011-02-15 19:23:36 +01:00
parent a80ed030ad
commit a1e019b41a
3 changed files with 26 additions and 2 deletions

View File

@ -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) {

View File

@ -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);
} }
/* /*

View File

@ -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);