Based on a patch by: Bastien Nocera <hadess@hadess.net>
2007-02-09 Jens Granseuer <jensgr@gmx.net> Based on a patch by: Bastien Nocera <hadess@hadess.net> * gnome-settings-dbus.c: (gnome_settings_server_media_player_key_pressed): * gnome-settings-dbus.h: * gnome-settings-multimedia-keys.c: (do_multimedia_player_action), (do_action), (acme_filter_events): eat media player keys if someone is listening on the dbus interface already (fixes bug #394313) svn path=/trunk/; revision=7271
This commit is contained in:
parent
5cfc95d400
commit
c3b4008673
4 changed files with 31 additions and 13 deletions
|
@ -1,3 +1,14 @@
|
|||
2007-02-09 Jens Granseuer <jensgr@gmx.net>
|
||||
|
||||
Based on a patch by: Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* gnome-settings-dbus.c:
|
||||
(gnome_settings_server_media_player_key_pressed):
|
||||
* gnome-settings-dbus.h:
|
||||
* gnome-settings-multimedia-keys.c: (do_multimedia_player_action),
|
||||
(do_action), (acme_filter_events): eat media player keys if someone is
|
||||
listening on the dbus interface already (fixes bug #394313)
|
||||
|
||||
2007-02-05 William Jon McCann <mccann@jhu.edu>
|
||||
|
||||
* gsd-media-keys-window.c: (render_eject), (draw_eject),
|
||||
|
|
|
@ -134,16 +134,19 @@ gnome_settings_server_get (void)
|
|||
return g_object_new (GNOME_SETTINGS_TYPE_SERVER, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
gnome_settings_server_media_player_key_pressed (GObject *server, const gchar *key)
|
||||
{
|
||||
const gchar *application = NULL;
|
||||
gboolean have_listeners = (GNOME_SETTINGS_SERVER (server)->media_players != NULL);
|
||||
|
||||
if (GNOME_SETTINGS_SERVER (server)->media_players != NULL) {
|
||||
if (have_listeners) {
|
||||
application = ((MediaPlayer *)GNOME_SETTINGS_SERVER (server)->media_players->data)->application;
|
||||
}
|
||||
|
||||
g_signal_emit (server, signals[MEDIA_PLAYER_KEY_PRESSED], 0, application, key);
|
||||
|
||||
return !have_listeners;
|
||||
}
|
||||
|
||||
static GObject*
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
G_BEGIN_DECLS
|
||||
|
||||
GObject *gnome_settings_server_get (void);
|
||||
void gnome_settings_server_media_player_key_pressed (GObject *server, const gchar *key);
|
||||
gboolean gnome_settings_server_media_player_key_pressed (GObject *server, const gchar *key);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -558,13 +558,13 @@ do_sound_action (Acme *acme, int type)
|
|||
dialog_show (acme);
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
do_multimedia_player_action (Acme *acme, const gchar *key)
|
||||
{
|
||||
gnome_settings_server_media_player_key_pressed (acme->server, key);
|
||||
return gnome_settings_server_media_player_key_pressed (acme->server, key);
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
do_action (Acme *acme, int type)
|
||||
{
|
||||
gchar *cmd;
|
||||
|
@ -608,23 +608,25 @@ do_action (Acme *acme, int type)
|
|||
do_www_action (acme, NULL);
|
||||
break;
|
||||
case PLAY_KEY:
|
||||
do_multimedia_player_action (acme, "Play");
|
||||
return do_multimedia_player_action (acme, "Play");
|
||||
break;
|
||||
case PAUSE_KEY:
|
||||
do_multimedia_player_action (acme, "Pause");
|
||||
return do_multimedia_player_action (acme, "Pause");
|
||||
break;
|
||||
case STOP_KEY:
|
||||
do_multimedia_player_action (acme, "Stop");
|
||||
return do_multimedia_player_action (acme, "Stop");
|
||||
break;
|
||||
case PREVIOUS_KEY:
|
||||
do_multimedia_player_action (acme, "Previous");
|
||||
return do_multimedia_player_action (acme, "Previous");
|
||||
break;
|
||||
case NEXT_KEY:
|
||||
do_multimedia_player_action (acme, "Next");
|
||||
return do_multimedia_player_action (acme, "Next");
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static GdkScreen *
|
||||
|
@ -689,8 +691,10 @@ acme_filter_events (GdkXEvent *xevent, GdkEvent *event, gpointer data)
|
|||
acme->current_screen = acme_get_screen_from_event
|
||||
(acme, xanyev);
|
||||
|
||||
do_action (acme, keys[i].key_type);
|
||||
if (do_action (acme, keys[i].key_type) == FALSE)
|
||||
return GDK_FILTER_REMOVE;
|
||||
else
|
||||
return GDK_FILTER_CONTINUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue