[gtk+] Consistently allow -1 to mean 'append' in tree models



commit 0b5f12975fefe625b643d6ac79ec58c88ea6d289
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Jul 12 08:35:50 2012 -0400

    Consistently allow -1 to mean 'append' in tree models
    
    Both GtkListStore and GtkTreeStore had a few methods that allowed
    -1 to mean 'append' when specified as a position, but others that
    demanded positive position arguments. Make this consistent by
    always allowing -1.
    https://bugzilla.gnome.org/show_bug.cgi?id=667808

 gtk/gtkliststore.c |   23 +++++++++--------------
 gtk/gtktreestore.c |   12 ++++++------
 2 files changed, 15 insertions(+), 20 deletions(-)
---
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c
index ee07b87..f19b64e 100644
--- a/gtk/gtkliststore.c
+++ b/gtk/gtkliststore.c
@@ -1249,12 +1249,12 @@ gtk_list_store_remove (GtkListStore *list_store,
  * gtk_list_store_insert:
  * @list_store: A #GtkListStore
  * @iter: (out): An unset #GtkTreeIter to set to the new row
- * @position: position to insert the new row
+ * @position: position to insert the new row, or -1 for last
  *
  * Creates a new row at @position.  @iter will be changed to point to this new
- * row.  If @position is larger than the number of rows on the list, then the
- * new row will be appended to the list. The row will be empty after this
- * function is called.  To fill in values, you need to call 
+ * row.  If @position is -1 or is larger than the number of rows on the list,
+ * then the new row will be appended to the list. The row will be empty after
+ * this function is called.  To fill in values, you need to call
  * gtk_list_store_set() or gtk_list_store_set_value().
  *
  **/
@@ -1271,7 +1271,6 @@ gtk_list_store_insert (GtkListStore *list_store,
 
   g_return_if_fail (GTK_IS_LIST_STORE (list_store));
   g_return_if_fail (iter != NULL);
-  g_return_if_fail (position >= 0);
 
   priv = list_store->priv;
 
@@ -1280,7 +1279,7 @@ gtk_list_store_insert (GtkListStore *list_store,
   seq = priv->seq;
 
   length = g_sequence_get_length (seq);
-  if (position > length)
+  if (position > length || position < 0)
     position = length;
 
   ptr = g_sequence_get_iter_at_pos (seq, position);
@@ -1405,14 +1404,10 @@ void
 gtk_list_store_append (GtkListStore *list_store,
 		       GtkTreeIter  *iter)
 {
-  GtkListStorePrivate *priv;
-
   g_return_if_fail (GTK_IS_LIST_STORE (list_store));
   g_return_if_fail (iter != NULL);
 
-  priv = list_store->priv;
-
-  gtk_list_store_insert (list_store, iter, g_sequence_get_length (priv->seq));
+  gtk_list_store_insert (list_store, iter, -1);
 }
 
 static void
@@ -2225,7 +2220,7 @@ gtk_list_store_insert_with_values (GtkListStore *list_store,
   seq = priv->seq;
 
   length = g_sequence_get_length (seq);
-  if (position > length)
+  if (position > length || position < 0)
     position = length;
 
   ptr = g_sequence_get_iter_at_pos (seq, position);
@@ -2261,7 +2256,7 @@ gtk_list_store_insert_with_values (GtkListStore *list_store,
  * gtk_list_store_insert_with_valuesv:
  * @list_store: A #GtkListStore
  * @iter: (out) (allow-none): An unset #GtkTreeIter to set to the new row, or %NULL.
- * @position: position to insert the new row
+ * @position: position to insert the new row, or -1 for last
  * @columns: (array length=n_values): an array of column numbers
  * @values: (array length=n_values): an array of GValues 
  * @n_values: the length of the @columns and @values arrays
@@ -2305,7 +2300,7 @@ gtk_list_store_insert_with_valuesv (GtkListStore *list_store,
   seq = priv->seq;
 
   length = g_sequence_get_length (seq);
-  if (position > length)
+  if (position > length || position < 0)
     position = length;
 
   ptr = g_sequence_get_iter_at_pos (seq, position);
diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c
index 6271359..21e7a20 100644
--- a/gtk/gtktreestore.c
+++ b/gtk/gtktreestore.c
@@ -1266,14 +1266,14 @@ gtk_tree_store_remove (GtkTreeStore *tree_store,
  * @tree_store: A #GtkTreeStore
  * @iter: (out): An unset #GtkTreeIter to set to the new row
  * @parent: (allow-none): A valid #GtkTreeIter, or %NULL
- * @position: position to insert the new row
+ * @position: position to insert the new row, or -1 for last
  *
  * Creates a new row at @position.  If parent is non-%NULL, then the row will be
  * made a child of @parent.  Otherwise, the row will be created at the toplevel.
- * If @position is larger than the number of rows at that level, then the new
- * row will be inserted to the end of the list.  @iter will be changed to point
- * to this new row.  The row will be empty after this function is called.  To
- * fill in values, you need to call gtk_tree_store_set() or
+ * If @position is -1 or is larger than the number of rows at that level, then
+ * the new row will be inserted to the end of the list.  @iter will be changed
+ * to point to this new row.  The row will be empty after this function is
+ * called.  To fill in values, you need to call gtk_tree_store_set() or
  * gtk_tree_store_set_value().
  *
  **/
@@ -1583,7 +1583,7 @@ gtk_tree_store_insert_with_values (GtkTreeStore *tree_store,
  * @tree_store: A #GtkTreeStore
  * @iter: (out) (allow-none): An unset #GtkTreeIter to set the new row, or %NULL.
  * @parent: (allow-none): A valid #GtkTreeIter, or %NULL
- * @position: position to insert the new row
+ * @position: position to insert the new row, or -1 for last
  * @columns: (array length=n_values): an array of column numbers
  * @values: (array length=n_values): an array of GValues
  * @n_values: the length of the @columns and @values arrays



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