[gnome-builder] navigation: implement max items in navigation



commit 5c3dcf757ca6183de4afdcc92c1da6ad4d3e9372
Author: Christian Hergert <christian hergert me>
Date:   Wed Sep 24 00:15:46 2014 -0700

    navigation: implement max items in navigation

 src/navigation/gb-navigation-list.c |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/src/navigation/gb-navigation-list.c b/src/navigation/gb-navigation-list.c
index 5372447..af6f14f 100644
--- a/src/navigation/gb-navigation-list.c
+++ b/src/navigation/gb-navigation-list.c
@@ -16,10 +16,14 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#define G_LOG_DOMAIN "navigation"
+
 #include <glib/gi18n.h>
 
 #include "gb-navigation-list.h"
 
+#define NAVIGATION_MAX_ITEMS 32
+
 struct _GbNavigationListPrivate
 {
   GPtrArray *items;
@@ -118,17 +122,26 @@ gb_navigation_list_append (GbNavigationList *list,
 
   position = list->priv->current + 1;
 
-  if (list->priv->items->len)
+  if (list->priv->items->len > (list->priv->current + 1))
     g_ptr_array_remove_range (list->priv->items, position,
                               list->priv->items->len - 1);
 
+  if (list->priv->items->len == NAVIGATION_MAX_ITEMS)
+    {
+      g_ptr_array_remove_index (list->priv->items, 0);
+      list->priv->current--;
+    }
+
   g_ptr_array_add (list->priv->items, g_object_ref_sink (item));
 
   list->priv->current++;
 
-  g_object_notify_by_pspec (G_OBJECT (list), gParamSpecs [PROP_CURRENT_ITEM]);
-  g_object_notify_by_pspec (G_OBJECT (list), gParamSpecs [PROP_CAN_GO_BACKWARD]);
-  g_object_notify_by_pspec (G_OBJECT (list), gParamSpecs [PROP_CAN_GO_FORWARD]);
+  g_object_notify_by_pspec (G_OBJECT (list),
+                            gParamSpecs [PROP_CURRENT_ITEM]);
+  g_object_notify_by_pspec (G_OBJECT (list),
+                            gParamSpecs [PROP_CAN_GO_BACKWARD]);
+  g_object_notify_by_pspec (G_OBJECT (list),
+                            gParamSpecs [PROP_CAN_GO_FORWARD]);
 }
 
 static void


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