[epiphany/wip/exalm/cleanups-again] Simplify bookmark opening




commit 44db74a93675e00b153f8f65a5e4de06f9b677ef
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Fri Feb 25 19:01:17 2022 +0500

    Simplify bookmark opening
    
    Remove the win.bookmark-open action as it's only used from one place.
    Instead, just inline that code.
    
    Since this is the last use of ephy_link_flags_from_current_event(), inline
    it as well. While it means we're still using ephy_gui_get_current_event(),
    at this point it's very close to the actual event handling and can be
    replaced relatively easily in GTK4 - unlike when it's in a GAction.

 src/bookmarks/ephy-bookmarks-popover.c | 88 ++++++++++++++--------------------
 src/ephy-link.c                        | 13 -----
 src/ephy-link.h                        |  2 -
 src/ephy-location-controller.c         |  4 +-
 src/ephy-window.c                      |  1 -
 src/window-commands.c                  | 14 ------
 6 files changed, 39 insertions(+), 83 deletions(-)
---
diff --git a/src/bookmarks/ephy-bookmarks-popover.c b/src/bookmarks/ephy-bookmarks-popover.c
index 779b9b58f..84d951fd1 100644
--- a/src/bookmarks/ephy-bookmarks-popover.c
+++ b/src/bookmarks/ephy-bookmarks-popover.c
@@ -26,6 +26,8 @@
 #include "ephy-bookmark-row.h"
 #include "ephy-bookmarks-manager.h"
 #include "ephy-debug.h"
+#include "ephy-gui.h"
+#include "ephy-link.h"
 #include "ephy-shell.h"
 #include "ephy-window.h"
 
@@ -63,7 +65,7 @@ tag_detail_back (EphyBookmarksPopover *self)
                                     "default");
 
   while ((row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (self->tag_detail_list_box), 0)))
-    gtk_container_remove (GTK_CONTAINER (self->tag_detail_list_box), GTK_WIDGET (row));
+    gtk_list_box_remove (GTK_LIST_BOX (self->tag_detail_list_box), GTK_WIDGET (row));
 }
 
 static void
@@ -80,7 +82,7 @@ remove_bookmark_row (GtkListBox *list_box,
 
     if (g_strcmp0 (type, EPHY_LIST_BOX_ROW_TYPE_BOOKMARK) == 0 &&
         g_strcmp0 (ephy_bookmark_row_get_bookmark_url (EPHY_BOOKMARK_ROW (row)), url) == 0) {
-      gtk_container_remove (GTK_CONTAINER (list_box), GTK_WIDGET (row));
+      gtk_list_box_remove (list_box, GTK_WIDGET (row));
       break;
     }
   }
@@ -114,7 +116,7 @@ ephy_bookmarks_popover_bookmark_tag_added_cb (EphyBookmarksPopover *self,
     GtkWidget *bookmark_row;
 
     bookmark_row = create_bookmark_row (bookmark, self);
-    gtk_container_add (GTK_CONTAINER (self->tag_detail_list_box), bookmark_row);
+    gtk_list_box_append (GTK_LIST_BOX (self->tag_detail_list_box), bookmark_row);
   }
 
   exists = FALSE;
@@ -132,7 +134,7 @@ ephy_bookmarks_popover_bookmark_tag_added_cb (EphyBookmarksPopover *self,
 
   if (!exists) {
     GtkWidget *tag_row = create_tag_row (tag);
-    gtk_container_add (GTK_CONTAINER (self->tags_list_box), tag_row);
+    gtk_list_box_append (GTK_LIST_BOX (self->tags_list_box), tag_row);
   }
 }
 
@@ -170,7 +172,7 @@ ephy_bookmarks_popover_bookmark_tag_removed_cb (EphyBookmarksPopover *self,
 
     if (!exists) {
       GtkWidget *row = create_bookmark_row (bookmark, self);
-      gtk_container_add (GTK_CONTAINER (self->tags_list_box), row);
+      gtk_list_box_append (GTK_LIST_BOX (self->tags_list_box), row);
     }
   }
 
@@ -196,7 +198,7 @@ ephy_bookmarks_popover_bookmark_tag_removed_cb (EphyBookmarksPopover *self,
       const char *title = g_object_get_data (G_OBJECT (row), "title");
 
       if (g_strcmp0 (title, tag) == 0)
-        gtk_container_remove (GTK_CONTAINER (self->tags_list_box), GTK_WIDGET (row));
+        gtk_list_box_remove (GTK_LIST_BOX (self->tags_list_box), GTK_WIDGET (row));
     }
   }
 }
@@ -239,9 +241,9 @@ create_tag_row (const char *tag)
   box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
 
   if (g_strcmp0 (tag, EPHY_BOOKMARKS_FAVORITES_TAG) == 0) {
-    image = gtk_image_new_from_icon_name ("emblem-favorite-symbolic", GTK_ICON_SIZE_MENU);
+    image = gtk_image_new_from_icon_name ("emblem-favorite-symbolic");
   } else {
-    image = gtk_image_new_from_icon_name ("ephy-bookmark-tag-symbolic", GTK_ICON_SIZE_MENU);
+    image = gtk_image_new_from_icon_name ("ephy-bookmark-tag-symbolic");
   }
   label = gtk_label_new (tag);
 
@@ -249,11 +251,10 @@ create_tag_row (const char *tag)
   gtk_label_set_xalign (GTK_LABEL (label), 0);
   gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
 
-  gtk_box_pack_start (GTK_BOX (box), image, FALSE, TRUE, 0);
-  gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
+  gtk_box_append (GTK_BOX (box), image);
+  gtk_box_append (GTK_BOX (box), label);
 
-  gtk_container_add (GTK_CONTAINER (row), box);
-  gtk_widget_show_all (row);
+  gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), box);
 
   return row;
 }
@@ -271,7 +272,7 @@ ephy_bookmarks_popover_bookmark_added_cb (EphyBookmarksPopover *self,
 
   if (g_sequence_is_empty (ephy_bookmark_get_tags (bookmark))) {
     row = create_bookmark_row (bookmark, self);
-    gtk_container_add (GTK_CONTAINER (self->tags_list_box), row);
+    gtk_list_box_append (GTK_LIST_BOX (self->tags_list_box), row);
   }
 
   if (strcmp (gtk_stack_get_visible_child_name (GTK_STACK (self->toplevel_stack)), "empty-state") == 0)
@@ -313,7 +314,7 @@ ephy_bookmarks_popover_tag_created_cb (EphyBookmarksPopover *self,
   g_assert (EPHY_IS_BOOKMARKS_MANAGER (manager));
 
   tag_row = create_tag_row (tag);
-  gtk_container_add (GTK_CONTAINER (self->tags_list_box), tag_row);
+  gtk_list_box_append (GTK_LIST_BOX (self->tags_list_box), tag_row);
 }
 
 static void
@@ -328,8 +329,8 @@ ephy_bookmarks_popover_tag_deleted_cb (EphyBookmarksPopover *self,
   g_assert (EPHY_IS_BOOKMARKS_MANAGER (manager));
 
   row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (self->tags_list_box), position);
-  gtk_container_remove (GTK_CONTAINER (self->tags_list_box),
-                        GTK_WIDGET (row));
+  gtk_list_box_remove (GTK_LIST_BOX (self->tags_list_box),
+                       GTK_WIDGET (row));
 
   if (g_strcmp0 (gtk_stack_get_visible_child_name (GTK_STACK (self->toplevel_stack)), "tag_detail") == 0 &&
       g_strcmp0 (self->tag_detail_tag, tag) == 0) {
@@ -367,16 +368,6 @@ tags_list_box_sort_func (GtkListBoxRow *row1,
   return g_strcmp0 (title1, title2);
 }
 
-static void
-ephy_bookmarks_popover_actions_tag_detail_back (GSimpleAction *action,
-                                                GVariant      *value,
-                                                gpointer       user_data)
-{
-  EphyBookmarksPopover *self = user_data;
-
-  tag_detail_back (self);
-}
-
 static void
 ephy_bookmarks_popover_show_tag_detail (EphyBookmarksPopover *self,
                                         const char           *tag)
@@ -392,7 +383,7 @@ ephy_bookmarks_popover_show_tag_detail (EphyBookmarksPopover *self,
     GtkWidget *row;
 
     row = create_bookmark_row (bookmark, self);
-    gtk_container_add (GTK_CONTAINER (self->tag_detail_list_box), row);
+    gtk_list_box_append (GTK_LIST_BOX (self->tag_detail_list_box), row);
   }
 
   gtk_label_set_label (GTK_LABEL (self->tag_detail_label), tag);
@@ -411,19 +402,21 @@ ephy_bookmarks_popover_open_bookmark (EphyBookmarksPopover *self,
                                       GtkListBoxRow        *row)
 {
   GtkWidget *window;
-  GActionGroup *action_group;
-  GAction *action;
   const char *url;
+  GdkEventType type = GDK_NOTHING;
+  guint state = 0, button = (guint) - 1;
+  EphyLinkFlags flags;
 
   window = gtk_widget_get_ancestor (GTK_WIDGET (self), EPHY_TYPE_WINDOW);
   g_assert (EPHY_IS_WINDOW (window));
-  action_group = gtk_widget_get_action_group (window, "win");
-  g_assert (action_group != NULL);
-  action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "open-bookmark");
-  g_assert (action != NULL);
   url = ephy_bookmark_row_get_bookmark_url (EPHY_BOOKMARK_ROW (row));
 
-  g_action_activate (action, g_variant_new_string (url));
+  ephy_gui_get_current_event (&type, &state, &button, NULL);
+  flags = ephy_link_flags_from_modifiers (state, button == GDK_BUTTON_MIDDLE &&
+                                                 (type == GDK_BUTTON_PRESS ||
+                                                  type == GDK_BUTTON_RELEASE));
+
+  ephy_link_open (EPHY_LINK (window), url, NULL, flags | EPHY_LINK_BOOKMARK);
 }
 
 static void
@@ -447,6 +440,7 @@ ephy_bookmarks_popover_list_box_row_activated_cb (EphyBookmarksPopover *self,
   }
 }
 
+/*
 static gboolean
 ephy_bookmarks_popover_list_box_button_release_event_cb (EphyBookmarksPopover *self,
                                                          GdkEvent             *event,
@@ -462,6 +456,7 @@ ephy_bookmarks_popover_list_box_button_release_event_cb (EphyBookmarksPopover *s
 
   return GDK_EVENT_STOP;
 }
+*/
 
 static void
 ephy_bookmarks_popover_finalize (GObject *object)
@@ -487,11 +482,10 @@ ephy_bookmarks_popover_class_init (EphyBookmarksPopoverClass *klass)
   gtk_widget_class_bind_template_child (widget_class, EphyBookmarksPopover, tags_list_box);
   gtk_widget_class_bind_template_child (widget_class, EphyBookmarksPopover, tag_detail_list_box);
   gtk_widget_class_bind_template_child (widget_class, EphyBookmarksPopover, tag_detail_label);
-}
 
-static const GActionEntry entries[] = {
-  { "tag-detail-back", ephy_bookmarks_popover_actions_tag_detail_back }
-};
+  gtk_widget_class_install_action (widget_class, "popover.tag-detail-back", NULL,
+                                   (GtkWidgetActionActivateFunc)tag_detail_back);
+}
 
 static void
 ephy_bookmarks_popover_init (EphyBookmarksPopover *self)
@@ -499,18 +493,11 @@ ephy_bookmarks_popover_init (EphyBookmarksPopover *self)
   GSequence *tags;
   GSequenceIter *iter;
   g_autoptr (GSequence) bookmarks = NULL;
-  g_autoptr (GSimpleActionGroup) group = NULL;
 
   gtk_widget_init_template (GTK_WIDGET (self));
 
   self->manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ());
 
-  group = g_simple_action_group_new ();
-  g_action_map_add_action_entries (G_ACTION_MAP (group), entries,
-                                   G_N_ELEMENTS (entries), self);
-  gtk_widget_insert_action_group (GTK_WIDGET (self), "popover",
-                                  G_ACTION_GROUP (group));
-
   gtk_list_box_bind_model (GTK_LIST_BOX (self->bookmarks_list_box),
                            G_LIST_MODEL (self->manager),
                            create_bookmark_row,
@@ -535,7 +522,7 @@ ephy_bookmarks_popover_init (EphyBookmarksPopover *self)
 
     if (!ephy_bookmarks_manager_has_bookmarks_with_tag (self->manager, tag)) {
       tag_row = create_tag_row (tag);
-      gtk_container_add (GTK_CONTAINER (self->tags_list_box), tag_row);
+      gtk_list_box_append (GTK_LIST_BOX (self->tags_list_box), tag_row);
     }
   }
 
@@ -547,8 +534,7 @@ ephy_bookmarks_popover_init (EphyBookmarksPopover *self)
     GtkWidget *bookmark_row;
 
     bookmark_row = create_bookmark_row (bookmark, self);
-    gtk_widget_show_all (bookmark_row);
-    gtk_container_add (GTK_CONTAINER (self->tags_list_box), bookmark_row);
+    gtk_list_box_append (GTK_LIST_BOX (self->tags_list_box), bookmark_row);
   }
 
   g_signal_connect_object (self->manager, "bookmark-added",
@@ -579,9 +565,9 @@ ephy_bookmarks_popover_init (EphyBookmarksPopover *self)
   g_signal_connect_object (self->tag_detail_list_box, "row-activated",
                            G_CALLBACK (ephy_bookmarks_popover_list_box_row_activated_cb),
                            self, G_CONNECT_SWAPPED);
-  g_signal_connect_object (self->bookmarks_list_box, "button-release-event",
-                           G_CALLBACK (ephy_bookmarks_popover_list_box_button_release_event_cb),
-                           self, G_CONNECT_SWAPPED);
+//  g_signal_connect_object (self->bookmarks_list_box, "button-release-event",
+//                           G_CALLBACK (ephy_bookmarks_popover_list_box_button_release_event_cb),
+//                           self, G_CONNECT_SWAPPED);
 }
 
 EphyBookmarksPopover *
diff --git a/src/ephy-link.c b/src/ephy-link.c
index 61dbb3735..07ca9a26f 100644
--- a/src/ephy-link.c
+++ b/src/ephy-link.c
@@ -115,16 +115,3 @@ ephy_link_flags_from_modifiers (GdkModifierType modifiers,
 
   return 0;
 }
-
-EphyLinkFlags
-ephy_link_flags_from_current_event (void)
-{
-  GdkEventType type = GDK_NOTHING;
-  guint state = 0, button = (guint) - 1;
-
-  ephy_gui_get_current_event (&type, &state, &button, NULL);
-
-  return ephy_link_flags_from_modifiers (state, button == GDK_BUTTON_MIDDLE &&
-                                                (type == GDK_BUTTON_PRESS ||
-                                                 type == GDK_BUTTON_RELEASE));
-}
diff --git a/src/ephy-link.h b/src/ephy-link.h
index ab3667538..7ec3c9ae8 100644
--- a/src/ephy-link.h
+++ b/src/ephy-link.h
@@ -61,6 +61,4 @@ EphyEmbed *ephy_link_open (EphyLink *link,
 EphyLinkFlags ephy_link_flags_from_modifiers (GdkModifierType modifiers,
                                               gboolean        middle_click);
 
-EphyLinkFlags ephy_link_flags_from_current_event (void);
-
 G_END_DECLS
diff --git a/src/ephy-location-controller.c b/src/ephy-location-controller.c
index 7d39a16b4..3f0db081d 100644
--- a/src/ephy-location-controller.c
+++ b/src/ephy-location-controller.c
@@ -86,7 +86,7 @@ entry_activate_cb (EphyLocationEntry      *entry,
   const char *content;
   char *address;
   char *effective_address;
-  GtkEntry *inner_entry;
+  GtkWidget *inner_entry;
 
   if (controller->sync_address_is_blocked) {
     controller->sync_address_is_blocked = FALSE;
@@ -94,7 +94,7 @@ entry_activate_cb (EphyLocationEntry      *entry,
   }
 
   inner_entry = ephy_location_entry_get_entry (entry);
-  content = gtk_entry_get_text (inner_entry);
+  content = gtk_entry_get_text (GTK_ENTRY (inner_entry));
   if (content == NULL || content[0] == '\0')
     return;
 
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 18ebca4e6..fef509336 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -835,7 +835,6 @@ static const GActionEntry window_entries [] = {
   { "find", window_cmd_find },
   { "find-prev", window_cmd_find_prev },
   { "find-next", window_cmd_find_next },
-  { "open-bookmark", window_cmd_open_bookmark, "s" },
   { "bookmark-page", window_cmd_bookmark_page },
   { "bookmarks", window_cmd_bookmarks },
   { "show-downloads", window_cmd_show_downloads },
diff --git a/src/window-commands.c b/src/window-commands.c
index d75b2e070..2ebc302aa 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -2398,20 +2398,6 @@ window_cmd_find_next (GSimpleAction *action,
   ephy_find_toolbar_find_next (toolbar);
 }
 
-void
-window_cmd_open_bookmark (GSimpleAction *action,
-                          GVariant      *parameter,
-                          gpointer       user_data)
-{
-  const gchar *address;
-  EphyLinkFlags flags;
-
-  address = g_variant_get_string (parameter, NULL);
-  flags = ephy_link_flags_from_current_event () | EPHY_LINK_BOOKMARK;
-
-  ephy_link_open (EPHY_LINK (user_data), address, NULL, flags);
-}
-
 void
 window_cmd_bookmark_page (GSimpleAction *action,
                           GVariant      *parameter,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]