gnome-settings-daemon/gnome-settings-daemon-bnc462640-mute-action.patch
Vincent Untz 142e9de3db Accepting request 29501 from home:MBoman:branches:GNOME:Factory
Copy from home:MBoman:branches:GNOME:Factory/gnome-settings-daemon via accept of submit request 29501 revision 5.
Request was accepted with message:
thanks

OBS-URL: https://build.opensuse.org/request/show/29501
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-settings-daemon?expand=0&rev=47
2010-01-15 01:30:42 +00:00

63 lines
2.6 KiB
Diff

Index: data/apps_gnome_settings_daemon_keybindings.schemas.in
===================================================================
--- data/apps_gnome_settings_daemon_keybindings.schemas.in.orig 2010-01-13 02:51:57.000000000 +1100
+++ data/apps_gnome_settings_daemon_keybindings.schemas.in 2010-01-13 16:44:53.000000000 +1100
@@ -14,6 +14,17 @@
</schema>
<schema>
+ <key>/schemas/apps/gnome_settings_daemon/toggle_mute</key>
+ <applyto>/apps/gnome_settings_daemon/toggle_mute</applyto>
+ <type>bool</type>
+ <default>TRUE</default>
+ <locale name="C">
+ <short>Toggle Mute</short>
+ <long>Toggle the sound mixer's mute status when then mute button is pressed.</long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/gnome_settings_daemon/keybindings/volume_mute</key>
<applyto>/apps/gnome_settings_daemon/keybindings/volume_mute</applyto>
<type>string</type>
Index: plugins/media-keys/gsd-media-keys-manager.c
===================================================================
--- plugins/media-keys/gsd-media-keys-manager.c.orig 2010-01-13 02:51:57.000000000 +1100
+++ plugins/media-keys/gsd-media-keys-manager.c 2010-01-13 16:44:53.000000000 +1100
@@ -636,8 +636,10 @@ do_sound_action (GsdMediaKeysManager *ma
int type)
{
gboolean muted;
+ gboolean toggle_mute;
guint vol, norm_vol_step;
int vol_step;
+ GError *error;
if (manager->priv->stream == NULL)
return;
@@ -658,7 +660,23 @@ do_sound_action (GsdMediaKeysManager *ma
switch (type) {
case MUTE_KEY:
muted = !muted;
- gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+
+ error = NULL;
+ toggle_mute = gconf_client_get_bool (manager->priv->conf_client,
+ GCONF_MISC_DIR "/toggle_mute",
+ &error);
+
+ if (error) {
+ toggle_mute = TRUE;
+ g_error_free (error);
+ }
+
+ if (toggle_mute)
+ gvc_mixer_stream_change_is_muted (manager->priv->stream,
+ muted);
+ else
+ gvc_mixer_stream_change_is_muted (manager->priv->stream,
+ TRUE);
break;
case VOLUME_DOWN_KEY:
if (!muted && (vol <= norm_vol_step)) {