Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-navigation-action.c
diff options
context:
space:
mode:
authorNickolay 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)
commit72fc0a73ea845307d6a109678952a0d07f6a1af4 (patch)
tree86bed4423c5863f42203584628c6280e70985023 /shell/ev-navigation-action.c
parentf3fd33cd579a92acbd7a86e550424558f973a064 (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.c34
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));
}