]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkliststore.c
Fix for #312924, by John Finlay.
[~andy/gtk] / gtk / gtkliststore.c
index 36cb4cc4a33f3cb255a17f53388a19b22e860415..b44f116171632642413b214d92137a28afe1e9c4 100644 (file)
 #include <config.h>
 #include <string.h>
 #include <gobject/gvaluecollector.h>
-#include "gtkalias.h"
 #include "gtktreemodel.h"
 #include "gtkliststore.h"
 #include "gtktreedatalist.h"
 #include "gtktreednd.h"
 #include "gtksequence.h"
+#include "gtkalias.h"
 
 #define GTK_LIST_STORE_IS_SORTED(list) (GTK_LIST_STORE (list)->sort_column_id != GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID)
 #define VALID_ITER(iter, list_store) ((iter)!= NULL && (iter)->user_data != NULL && list_store->stamp == (iter)->stamp && !_gtk_sequence_ptr_is_end ((iter)->user_data) && _gtk_sequence_ptr_get_sequence ((iter)->user_data) == list_store->seq)
@@ -74,6 +74,8 @@ static void gtk_list_store_set_column_type (GtkListStore *list_store,
                                            gint          column,
                                            GType         type);
 
+static void gtk_list_store_increment_stamp (GtkListStore *list_store);
+
 
 /* Drag and Drop */
 static gboolean real_gtk_list_store_row_draggable (GtkTreeDragSource *drag_source,
@@ -1121,6 +1123,16 @@ gtk_list_store_append (GtkListStore *list_store,
   gtk_list_store_insert (list_store, iter, _gtk_sequence_get_length (list_store->seq));
 }
 
+static void
+gtk_list_store_increment_stamp (GtkListStore *list_store)
+{
+  do
+    {
+      list_store->stamp++;
+    }
+  while (list_store->stamp == 0);
+}
+
 /**
  * gtk_list_store_clear:
  * @list_store: a #GtkListStore.
@@ -1140,6 +1152,8 @@ gtk_list_store_clear (GtkListStore *list_store)
       iter.user_data = _gtk_sequence_get_begin_ptr (list_store->seq);
       gtk_list_store_remove (list_store, &iter);
     }
+
+  gtk_list_store_increment_stamp (list_store);
 }
 
 /**
@@ -2077,3 +2091,6 @@ gtk_list_store_insert_with_valuesv (GtkListStore *list_store,
   gtk_tree_model_row_inserted (GTK_TREE_MODEL (list_store), path, iter);
   gtk_tree_path_free (path);
 }
+
+#define __GTK_LIST_STORE_C__
+#include "gtkaliasdef.c"