From 72fc0a73ea845307d6a109678952a0d07f6a1af4 Mon Sep 17 00:00:00 2001 From: Nickolay V. Shmyrev Date: Sun, 28 Jan 2007 13:29:10 +0000 Subject: History finally works as expected. 2007-01-28 Nickolay V. Shmyrev * shell/ev-navigation-action.c: (activate_menu_item_cb), (ev_navigation_action_class_init): * shell/ev-navigation-action.h: * shell/ev-page-action.c: (activate_cb): * shell/ev-page-cache.c: (ev_page_cache_class_init), (ev_page_cache_set_current_page_history): * shell/ev-page-cache.h: * shell/ev-sidebar-thumbnails.c: (ev_sidebar_tree_selection_changed), (ev_sidebar_icon_selection_changed), (page_changed_cb): * shell/ev-view-private.h: * shell/ev-view.c: (ev_view_handle_link), (ev_view_class_init): * shell/ev-view.h: * shell/ev-window.c: (page_changed_cb), (history_changed_cb), (ev_window_setup_document), (ev_window_load_job_cb): * shell/ev-window.h: History finally works as expected. svn path=/trunk/; revision=2259 --- (limited to 'shell/ev-navigation-action.c') diff --git a/shell/ev-navigation-action.c b/shell/ev-navigation-action.c index 490b5f9..88fe67b 100644 --- a/shell/ev-navigation-action.c +++ b/shell/ev-navigation-action.c @@ -22,7 +22,6 @@ #include "ev-navigation-action.h" #include "ev-navigation-action-widget.h" -#include "ev-window.h" #include #include @@ -33,9 +32,16 @@ #include #include +enum +{ + WIDGET_ACTIVATE_LINK, + WIDGET_N_SIGNALS +}; + +static guint widget_signals[WIDGET_N_SIGNALS] = {0, }; + struct _EvNavigationActionPrivate { - EvWindow *window; EvHistory *history; }; @@ -58,13 +64,6 @@ ev_navigation_action_set_history (EvNavigationAction *action, (gpointer *) &action->priv->history); } -void -ev_navigation_action_set_window (EvNavigationAction *action, - EvWindow *window) -{ - action->priv->window = window; -} - static void activate_menu_item_cb (GtkWidget *widget, EvNavigationAction *action) { @@ -75,16 +74,12 @@ activate_menu_item_cb (GtkWidget *widget, EvNavigationAction *action) index = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "index")); ev_history_set_current_index (action->priv->history, index); - if (action->priv->window) { + if (action->priv->history) { EvLink *link; - EvLinkAction *link_action; - EvLinkDest *dest; link = ev_history_get_link_nth (action->priv->history, index); - link_action = ev_link_get_action (link); - dest = ev_link_action_get_dest (link_action); - ev_window_goto_dest (action->priv->window, dest); + g_signal_emit (action, widget_signals[WIDGET_ACTIVATE_LINK], 0, link); } } @@ -223,5 +218,14 @@ ev_navigation_action_class_init (EvNavigationActionClass *class) action_class->create_tool_item = create_tool_item; action_class->connect_proxy = connect_proxy; + widget_signals[WIDGET_ACTIVATE_LINK] = g_signal_new ("activate_link", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (EvNavigationActionClass, activate_link), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + G_TYPE_OBJECT); + g_type_class_add_private (object_class, sizeof (EvNavigationActionPrivate)); } -- cgit v0.9.1