From 1f12f81ed3a0bd2988e19e1ae6d7c05f40ff9c73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Correa=20G=C3=B3mez?= <ablocorrea@hotmail.com>
Date: Wed, 9 Nov 2022 00:03:50 +0100
Subject: [PATCH] REVERT ev-window: Remove goto-bookmark action and bookmark_menu

goto-bookmark is a remmanent from the times where the Toolbar holded
bookmarks. The action was in use when the porting to actions happened in
8bb5fce0754aa0d2dc795d2d21ec778888dc3714, but that is no longer the
case after multiple toolbar refactoring. Simply drop this dead code.
---
 shell/ev-window.c | 62 -----------------------------------------------
 1 file changed, 62 deletions(-)

diff --git a/shell/ev-window.c b/shell/ev-window.c
index 128ebe6df..4d8629cd0 100644
--- a/shell/ev-window.c	2023-03-22 00:54:40.000000000 +0100
+++ b/shell/ev-window.c	2023-05-10 22:28:08.232482669 +0200
@@ -205,6 +205,7 @@
 	EvWindowTitle *title;
 	EvMetadata *metadata;
 	EvBookmarks *bookmarks;
+	GMenu *bookmarks_menu;
 
 	/* Has the document been modified? */
 	gboolean is_modified;
@@ -394,6 +395,7 @@
 static void	ev_window_emit_closed			(EvWindow         *window);
 static void 	ev_window_emit_doc_loaded		(EvWindow	  *window);
 #endif
+static void     ev_window_setup_bookmarks               (EvWindow         *window);
 
 static void     ev_window_show_find_bar                 (EvWindow         *ev_window,
 							 gboolean          restart);
@@ -571,6 +573,7 @@
 	 */
 	ev_window_set_action_enabled (ev_window, "save-settings", !recent_view_mode);
 	ev_window_set_action_enabled (ev_window, "show-side-pane", !recent_view_mode);
+	ev_window_set_action_enabled (ev_window, "goto-bookmark", !recent_view_mode);
 	ev_window_set_action_enabled (ev_window, "scroll-forward", !recent_view_mode);
 	ev_window_set_action_enabled (ev_window, "scroll-backwards", !recent_view_mode);
 	ev_window_set_action_enabled (ev_window, "sizing-mode", !recent_view_mode);
@@ -2435,6 +2440,10 @@
 			priv->bookmarks = ev_bookmarks_new (priv->metadata);
 			ev_sidebar_bookmarks_set_bookmarks (EV_SIDEBAR_BOOKMARKS (priv->sidebar_bookmarks),
 							    priv->bookmarks);
+			g_signal_connect_swapped (priv->bookmarks, "changed",
+						  G_CALLBACK (ev_window_setup_bookmarks),
+						  ev_window);
+			ev_window_setup_bookmarks (ev_window);
 		}
 	}
 
@@ -5112,6 +5119,42 @@
 	}
 }
 
+static gint
+compare_bookmarks (EvBookmark *a,
+		   EvBookmark *b)
+{
+	if (a->page < b->page)
+		return -1;
+	if (a->page > b->page)
+		return 1;
+	return 0;
+}
+
+static void
+ev_window_setup_bookmarks (EvWindow *window)
+{
+	EvWindowPrivate *priv = GET_PRIVATE (window);
+	GList *items, *it;
+
+	g_menu_remove_all (priv->bookmarks_menu);
+
+	items = g_list_sort (ev_bookmarks_get_bookmarks (priv->bookmarks),
+			     (GCompareFunc) compare_bookmarks);
+
+	for (it = items; it; it = it->next) {
+		EvBookmark *bookmark = it->data;
+		GMenuItem *item;
+
+		item = g_menu_item_new (bookmark->title, NULL);
+		g_menu_item_set_action_and_target (item, "win.goto-bookmark", "u", bookmark->page);
+		g_menu_append_item (priv->bookmarks_menu, item);
+
+		g_object_unref (item);
+	}
+
+	g_list_free (items);
+}
+
 static void
 ev_window_cmd_bookmarks_add (GSimpleAction *action,
 			     GVariant      *parameter,
@@ -5147,6 +5190,21 @@
 }
 
 static void
+ev_window_activate_goto_bookmark_action (GSimpleAction *action,
+					 GVariant      *parameter,
+					 gpointer       user_data)
+{
+	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));
+}
+
+static void
 ev_window_cmd_view_reload (GSimpleAction *action,
 			   GVariant      *parameter,
 			   gpointer       user_data)
@@ -6083,6 +6141,7 @@
 		priv->title = NULL;
 	}
 
+	g_clear_object (&priv->bookmarks_menu);
 	g_clear_object (&priv->view_popup_menu);
 	g_clear_object (&priv->attachment_popup_menu);
 
@@ -6296,6 +6355,7 @@
 	{ "auto-scroll", ev_window_cmd_view_autoscroll },
 	{ "add-bookmark", ev_window_cmd_bookmarks_add },
 	{ "delete-bookmark", ev_window_cmd_bookmarks_delete },
+	{ "goto-bookmark", ev_window_activate_goto_bookmark_action, "u" },
 	{ "close", ev_window_cmd_file_close_window },
 	{ "scroll-forward", ev_window_cmd_scroll_forward },
 	{ "scroll-backwards", ev_window_cmd_scroll_backwards },
@@ -7463,6 +7523,8 @@
                           G_CALLBACK (history_changed_cb),
                           ev_window);
 
+	priv->bookmarks_menu = g_menu_new ();
+
 	app_info = g_app_info_get_default_for_uri_scheme ("mailto");
 	priv->has_mailto_handler = app_info != NULL;
 	g_clear_object (&app_info);
