[gtk+] tests: Add test resetting the model



commit 070124b0a54166b17f8609bbdf942eb08f3f5ec3
Author: Benjamin Otte <otte redhat com>
Date:   Wed Dec 14 13:49:31 2011 +0100

    tests: Add test resetting the model
    
    We first set a NULL model and then reset the old model, just to get the
    effect of clearing and then resetting.
    
    We reset the cursor and selection afterwards, so the reset doesn't
    destroy all the work we did.

 tests/testtreechanging.c |   38 ++++++++++++++++++++++++++++++++++++--
 1 files changed, 36 insertions(+), 2 deletions(-)
---
diff --git a/tests/testtreechanging.c b/tests/testtreechanging.c
index f8b90ff..106fc37 100644
--- a/tests/testtreechanging.c
+++ b/tests/testtreechanging.c
@@ -63,7 +63,7 @@ log_operation_for_path (GtkTreePath *path,
 {
   char *path_string;
 
-  path_string = gtk_tree_path_to_string (path);
+  path_string = path ? gtk_tree_path_to_string (path) : g_strdup ("");
 
   g_printerr ("%10s %s\n", operation_name, path_string);
 
@@ -288,6 +288,39 @@ unselect (GtkTreeView *treeview)
                                     &iter);
 }
 
+static void
+reset_model (GtkTreeView *treeview)
+{
+  GtkTreeSelection *selection;
+  GtkTreeModel *model;
+  GList *list, *selected;
+  GtkTreePath *cursor;
+  
+  selection = gtk_tree_view_get_selection (treeview);
+  model = g_object_ref (gtk_tree_view_get_model (treeview));
+
+  log_operation_for_path (NULL, "reset");
+
+  selected = gtk_tree_selection_get_selected_rows (selection, NULL);
+  gtk_tree_view_get_cursor (treeview, &cursor, NULL);
+
+  gtk_tree_view_set_model (treeview, NULL);
+  gtk_tree_view_set_model (treeview, model);
+
+  if (cursor)
+    {
+      gtk_tree_view_set_cursor (treeview, cursor, NULL, FALSE);
+      gtk_tree_path_free (cursor);
+    }
+  for (list = selected; list; list = list->next)
+    {
+      gtk_tree_selection_select_path (selection, list->data);
+    }
+  g_list_free_full (selected, (GDestroyNotify) gtk_tree_path_free);
+
+  g_object_unref (model);
+}
+
 /* sanity checks */
 
 static void
@@ -363,7 +396,8 @@ dance (gpointer treeview)
     expand,
     collapse,
     select_,
-    unselect
+    unselect,
+    reset_model
   };
   guint i;
 



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