diff options
author | Nickolay V. Shmyrev <nshmyrev@yandex.ru> | 2007-01-28 13:29:10 (GMT) |
---|---|---|
committer | Nickolay V. Shmyrev <nshmyrev@src.gnome.org> | 2007-01-28 13:29:10 (GMT) |
commit | 72fc0a73ea845307d6a109678952a0d07f6a1af4 (patch) | |
tree | 86bed4423c5863f42203584628c6280e70985023 /shell/ev-navigation-action.c | |
parent | f3fd33cd579a92acbd7a86e550424558f973a064 (diff) |
History finally works as expected.
2007-01-28 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* 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
Diffstat (limited to 'shell/ev-navigation-action.c')
-rw-r--r-- | shell/ev-navigation-action.c | 34 |
1 files changed, 19 insertions, 15 deletions
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 <gtk/gtklabel.h> #include <gtk/gtkimage.h> @@ -33,9 +32,16 @@ #include <gtk/gtkmenutoolbutton.h> #include <glib/gi18n.h> +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)); } |