[epiphany/wip/search-engine-dialog: 2/4] Filter smart bookmarks out of bookmarks popover



commit 7ca661dbe8db4709d65b54fb67a188cfcdca15d7
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Mon Oct 31 16:23:02 2016 -0500

    Filter smart bookmarks out of bookmarks popover

 src/bookmarks/ephy-bookmarks-manager.c |   28 ++++++++++++++++++++++------
 src/bookmarks/ephy-bookmarks-popover.c |   12 ++++++++++++
 2 files changed, 34 insertions(+), 6 deletions(-)
---
diff --git a/src/bookmarks/ephy-bookmarks-manager.c b/src/bookmarks/ephy-bookmarks-manager.c
index c2a503e..161142e 100644
--- a/src/bookmarks/ephy-bookmarks-manager.c
+++ b/src/bookmarks/ephy-bookmarks-manager.c
@@ -216,8 +216,17 @@ static guint
 ephy_bookmarks_manager_list_model_get_n_items (GListModel *model)
 {
   EphyBookmarksManager *self = EPHY_BOOKMARKS_MANAGER (model);
+  int count = 0;
 
-  return g_sequence_get_length (self->bookmarks);
+  for (GSequenceIter *iter = g_sequence_get_begin_iter (self->bookmarks);
+       !g_sequence_iter_is_end (iter);
+       iter = g_sequence_iter_next (iter)) {
+    EphyBookmark *bookmark = g_sequence_get (iter);
+    if (!ephy_bookmark_is_smart (bookmark))
+      count++;
+  }
+
+  return count;
 }
 
 static gpointer
@@ -225,11 +234,18 @@ ephy_bookmarks_manager_list_model_get_item (GListModel *model,
                                             guint       position)
 {
   EphyBookmarksManager *self = EPHY_BOOKMARKS_MANAGER (model);
-  GSequenceIter *iter;
-
-  iter = g_sequence_get_iter_at_pos (self->bookmarks, position);
-
-  return g_object_ref (g_sequence_get (iter));
+  GSequenceIter *iter = g_sequence_get_begin_iter (self->bookmarks);
+  EphyBookmark *bookmark = NULL;
+  guint i = 0;
+
+  do {
+    bookmark = g_sequence_get (iter);
+    if (!ephy_bookmark_is_smart (bookmark))
+      i++;
+    iter = g_sequence_iter_next (iter);
+  } while (i <= position);
+
+  return bookmark ? g_object_ref (bookmark) : NULL;
 }
 
 static void
diff --git a/src/bookmarks/ephy-bookmarks-popover.c b/src/bookmarks/ephy-bookmarks-popover.c
index 62f6dbb..bf96aad 100644
--- a/src/bookmarks/ephy-bookmarks-popover.c
+++ b/src/bookmarks/ephy-bookmarks-popover.c
@@ -154,6 +154,8 @@ create_bookmark_row (gpointer item,
   EphyBookmark *bookmark = EPHY_BOOKMARK (item);
   GtkWidget *row;
 
+  g_assert (!ephy_bookmark_is_smart (bookmark));
+
   row = ephy_bookmark_row_new (bookmark);
   g_object_set_data_full (G_OBJECT (row), "type",
                           g_strdup (EPHY_LIST_BOX_ROW_TYPE_BOOKMARK),
@@ -221,6 +223,9 @@ ephy_bookmarks_popover_bookmark_added_cb (EphyBookmarksPopover *self,
   g_assert (EPHY_IS_BOOKMARK (bookmark));
   g_assert (EPHY_IS_BOOKMARKS_MANAGER (manager));
 
+  if (ephy_bookmark_is_smart (bookmark))
+    return;
+
   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);
@@ -240,6 +245,9 @@ ephy_bookmarks_popover_bookmark_removed_cb (EphyBookmarksPopover *self,
   g_assert (EPHY_IS_BOOKMARK (bookmark));
   g_assert (EPHY_IS_BOOKMARKS_MANAGER (manager));
 
+  if (ephy_bookmark_is_smart (bookmark))
+    return;
+
   children = gtk_container_get_children (GTK_CONTAINER (self->tags_list_box));
   for (l = children; l != NULL; l = l->next) {
     const char *type;
@@ -358,6 +366,8 @@ ephy_bookmarks_popover_show_tag_detail (EphyBookmarksPopover *self,
     EphyBookmark *bookmark = g_sequence_get (iter);
     GtkWidget *row;
 
+    if (ephy_bookmark_is_smart (bookmark))
+      continue;
     row = create_bookmark_row (bookmark, self);
     gtk_container_add (GTK_CONTAINER (self->tag_detail_list_box), row);
   }
@@ -496,6 +506,8 @@ ephy_bookmarks_popover_init (EphyBookmarksPopover *self)
     EphyBookmark *bookmark = g_sequence_get (iter);
     GtkWidget *bookmark_row;
 
+    if (ephy_bookmark_is_smart (bookmark))
+      continue;
     bookmark_row = create_bookmark_row (bookmark, self);
     gtk_widget_show_all (bookmark_row);
     gtk_container_add (GTK_CONTAINER (self->tags_list_box), bookmark_row);


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