diff options
author | Bastien Nocera <hadess@hadess.net> | 2008-06-24 18:15:12 (GMT) |
---|---|---|
committer | Bastien Nocera <hadess@src.gnome.org> | 2008-06-24 18:15:12 (GMT) |
commit | 7042909ab901b54e952410572b3d724e49094158 (patch) | |
tree | 0e0ec62510a1d2bef370d2b0d2f8e0ec1beebb04 /shell/ev-window.c | |
parent | 160bb033c06d78193c51d6cd1a671835c037c869 (diff) |
When building with D-Bus support, listen for multimedia key events from
2008-06-24 Bastien Nocera <hadess@hadess.net>
* shell/Makefile.am:
* shell/ev-application.c (ev_application_init),
(ev_application_get_media_keys):
* shell/ev-application.h:
* shell/ev-marshal.list:
* shell/ev-media-player-keys.c (ev_media_player_keys_class_init),
(proxy_destroy), (on_media_player_key_pressed),
(ev_media_player_keys_init), (ev_media_player_keys_focused),
(ev_media_player_keys_finalize), (ev_media_player_keys_new):
* shell/ev-media-player-keys.h:
* shell/ev-window.c (ev_window_go_previous_page),
(ev_window_go_next_page), (ev_window_go_first_page),
(ev_window_go_last_page), (ev_window_start_presentation),
(ev_window_dispose), (view_actions_focus_in_cb):
* shell/ev-window.h: When building with D-Bus support, listen
for multimedia key events from gnome-settings-daemon. This allows
to go to the next/previous/first/last pages using, respectively,
Next/Previous/Rewing/Fast Forward. The Play button is used to start
a presentation. Fixes bug #539971.
svn path=/trunk/; revision=3059
Diffstat (limited to 'shell/ev-window.c')
-rw-r--r-- | shell/ev-window.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c index 81efe3d..6849b24 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -68,6 +68,9 @@ #include "ev-message-area.h" #include "ev-mount-operation.h" #include "ev-file-monitor.h" +#ifdef ENABLE_DBUS +#include "ev-media-player-keys.h" +#endif /* ENABLE_DBUS */ #include <gtk/gtkprintunixdialog.h> @@ -3231,6 +3234,12 @@ ev_window_cmd_go_previous_page (GtkAction *action, EvWindow *ev_window) ev_view_previous_page (EV_VIEW (ev_window->priv->view)); } +void +ev_window_go_previous_page (EvWindow *ev_window) +{ + ev_window_cmd_go_previous_page (NULL, ev_window); +} + static void ev_window_cmd_go_next_page (GtkAction *action, EvWindow *ev_window) { @@ -3239,6 +3248,12 @@ ev_window_cmd_go_next_page (GtkAction *action, EvWindow *ev_window) ev_view_next_page (EV_VIEW (ev_window->priv->view)); } +void +ev_window_go_next_page (EvWindow *ev_window) +{ + ev_window_cmd_go_next_page (NULL, ev_window); +} + static void ev_window_cmd_go_first_page (GtkAction *action, EvWindow *ev_window) { @@ -3247,6 +3262,12 @@ ev_window_cmd_go_first_page (GtkAction *action, EvWindow *ev_window) ev_page_cache_set_current_page (ev_window->priv->page_cache, 0); } +void +ev_window_go_first_page (EvWindow *ev_window) +{ + ev_window_cmd_go_first_page (NULL, ev_window); +} + static void ev_window_cmd_go_last_page (GtkAction *action, EvWindow *ev_window) { @@ -3258,6 +3279,12 @@ ev_window_cmd_go_last_page (GtkAction *action, EvWindow *ev_window) ev_page_cache_set_current_page (ev_window->priv->page_cache, n_pages - 1); } +void +ev_window_go_last_page (EvWindow *ev_window) +{ + ev_window_cmd_go_last_page (NULL, ev_window); +} + static void ev_window_cmd_go_forward (GtkAction *action, EvWindow *ev_window) { @@ -3358,6 +3385,12 @@ ev_window_cmd_start_presentation (GtkAction *action, EvWindow *window) ev_window_run_presentation (window); } +void +ev_window_start_presentation (EvWindow *ev_window) +{ + ev_window_run_presentation (ev_window); +} + static gboolean ev_window_enumerate_printer_cb (GtkPrinter *printer, EvWindow *window) @@ -4101,6 +4134,15 @@ ev_window_dispose (GObject *object) { EvWindow *window = EV_WINDOW (object); EvWindowPrivate *priv = window->priv; +#ifdef ENABLE_DBUS + GObject *keys; + + keys = ev_application_get_media_keys (EV_APP); + if (keys) { + ev_media_player_keys_focused (EV_MEDIA_PLAYER_KEYS (keys), NULL); + g_object_unref (keys); + } +#endif /* ENABLE_DBUS */ if (priv->monitor) { g_object_unref (priv->monitor); @@ -4624,6 +4666,16 @@ sidebar_widget_model_set (EvSidebarLinks *ev_sidebar_links, static gboolean view_actions_focus_in_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *window) { +#ifdef ENABLE_DBUS + GObject *keys; + + keys = ev_application_get_media_keys (EV_APP); + if (keys) { + ev_media_player_keys_focused (EV_MEDIA_PLAYER_KEYS (keys), window); + g_object_unref (keys); + } +#endif /* ENABLE_DBUS */ + update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, FALSE); ev_window_set_action_sensitive (window, "ViewToolbar", TRUE); |