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.
This commit is contained in:
Benjamin Otte 2011-12-14 13:49:31 +01:00
parent f5621a3a8e
commit 070124b0a5

View File

@ -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;