Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-window.c
diff options
context:
space:
mode:
authorBastien 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)
commit7042909ab901b54e952410572b3d724e49094158 (patch)
tree0e0ec62510a1d2bef370d2b0d2f8e0ec1beebb04 /shell/ev-window.c
parent160bb033c06d78193c51d6cd1a671835c037c869 (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.c52
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);