[evince] history: Record links in history when activating bookmarks
- From: Germán Poo-Caamaño <gpoo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] history: Record links in history when activating bookmarks
- Date: Sat, 27 Jun 2020 04:49:07 +0000 (UTC)
commit 8ac15c3f487b5dde83f77243ce88f77c54d6718f
Author: Casey Jao <casey jao gmail com>
Date: Tue Sep 5 09:25:11 2017 -0400
history: Record links in history when activating bookmarks
shell/ev-sidebar-bookmarks.h:
shell/ev-sidebar-bookmarks.c:
* Added a new "bookmark-activated" signal to be emitted
when a bookmark is selected on the sidebar.
shell/ev-window.c:
* Added a handler for "bookmark-activated" which records
the appropriate pages in the history.
https://bugzilla.gnome.org/show_bug.cgi?id=785627
Partially fixes #810 (2/5)
shell/ev-sidebar-bookmarks.c | 21 +++++++++++++++++++++
shell/ev-sidebar-bookmarks.h | 3 +++
shell/ev-window.c | 21 +++++++++++++++++++++
3 files changed, 45 insertions(+)
---
diff --git a/shell/ev-sidebar-bookmarks.c b/shell/ev-sidebar-bookmarks.c
index e5b90146..1acccdd3 100644
--- a/shell/ev-sidebar-bookmarks.c
+++ b/shell/ev-sidebar-bookmarks.c
@@ -40,6 +40,13 @@ enum {
N_COLUMNS
};
+enum {
+ ACTIVATED,
+ N_SIGNALS
+};
+
+static guint signals[N_SIGNALS] = { 0 };
+
struct _EvSidebarBookmarksPrivate {
EvDocumentModel *model;
EvBookmarks *bookmarks;
@@ -103,9 +110,11 @@ ev_bookmarks_popup_cmd_open_bookmark (GtkAction *action,
EvSidebarBookmarksPrivate *priv = sidebar_bookmarks->priv;
GtkTreeSelection *selection;
gint page;
+ gint old_page = ev_document_model_get_page (priv->model);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view));
page = ev_sidebar_bookmarks_get_selected_page (sidebar_bookmarks, selection);
+ g_signal_emit (sidebar_bookmarks, signals[ACTIVATED], 0, old_page, page);
ev_document_model_set_page (priv->model, page);
}
@@ -226,6 +235,8 @@ ev_sidebar_bookmarks_selection_changed (GtkTreeSelection *selection,
page = ev_sidebar_bookmarks_get_selected_page (sidebar_bookmarks, selection);
if (page >= 0) {
+ gint old_page = ev_document_model_get_page (priv->model);
+ g_signal_emit (sidebar_bookmarks, signals[ACTIVATED], 0, old_page, page);
ev_document_model_set_page (priv->model, page);
gtk_widget_set_sensitive (priv->del_button, TRUE);
} else {
@@ -553,6 +564,16 @@ ev_sidebar_bookmarks_class_init (EvSidebarBookmarksClass *klass)
widget_class->popup_menu = ev_sidebar_bookmarks_popup_menu;
g_object_class_override_property (g_object_class, PROP_WIDGET, "main-widget");
+ /* Signals */
+ signals[ACTIVATED] =
+ g_signal_new ("bookmark-activated",
+ EV_TYPE_SIDEBAR_BOOKMARKS,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EvSidebarBookmarksClass, activated),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 2,
+ G_TYPE_INT, G_TYPE_INT);
}
GtkWidget *
diff --git a/shell/ev-sidebar-bookmarks.h b/shell/ev-sidebar-bookmarks.h
index c2438b0d..4efd133f 100644
--- a/shell/ev-sidebar-bookmarks.h
+++ b/shell/ev-sidebar-bookmarks.h
@@ -49,6 +49,9 @@ struct _EvSidebarBookmarksClass {
GtkBoxClass base_class;
void (*add_bookmark) (EvSidebarBookmarks *sidebar_bookmarks);
+ void (*activated) (EvSidebarBookmarks *sidebar_bookmarks,
+ gint old_page,
+ gint page);
};
GType ev_sidebar_bookmarks_get_type (void) G_GNUC_CONST;
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 30618179..a0741500 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -365,6 +365,10 @@ static void view_handle_link_cb (EvView *view,
gint old_page,
EvLink *link,
EvWindow *window);
+static void bookmark_activated_cb (EvSidebarBookmarks *sidebar_bookmarks,
+ gint old_page,
+ gint page,
+ EvWindow *window);
static void activate_link_cb (GObject *object,
EvLink *link,
EvWindow *window);
@@ -956,6 +960,16 @@ view_handle_link_cb (EvView *view, gint old_page, EvLink *link, EvWindow *window
g_object_unref (new_link);
}
+static void
+bookmark_activated_cb (EvSidebarBookmarks *sidebar_bookmarks,
+ gint old_page,
+ gint page,
+ EvWindow *window)
+{
+ ev_history_add_page (window->priv->history, old_page);
+ ev_history_add_page (window->priv->history, page);
+}
+
static void
view_selection_changed_cb (EvView *view,
EvWindow *window)
@@ -5158,6 +5172,10 @@ ev_window_activate_goto_bookmark_action (GSimpleAction *action,
{
EvWindow *window = user_data;
EvWindowPrivate *priv = GET_PRIVATE (window);
+ gint old_page = ev_document_model_get_page (priv->model);
+
+ ev_history_add_page (priv->history, old_page);
+ ev_history_add_page (priv->history, g_variant_get_uint32 (parameter));
ev_document_model_set_page (priv->model, g_variant_get_uint32 (parameter));
}
@@ -7680,6 +7698,9 @@ ev_window_init (EvWindow *ev_window)
g_signal_connect_object (priv->view, "selection-changed",
G_CALLBACK (view_selection_changed_cb),
ev_window, 0);
+ g_signal_connect_object (priv->sidebar_bookmarks, "bookmark-activated",
+ G_CALLBACK (bookmark_activated_cb),
+ ev_window, 0);
g_signal_connect_object (priv->view, "annot-added",
G_CALLBACK (view_annot_added),
ev_window, 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]