Exemple #1
0
static void
tree_selection_unselect_helper(gpointer data, gpointer user_data)
{
	GtkTreeSelection *s = user_data;
	GtkTreeIter *iter = data;

	gtk_tree_selection_unselect_iter(s, iter);
	w_tree_iter_free(iter);
}
Exemple #2
0
static void
remove_selected_file(void *iter_ptr, void *search_ptr)
{
	GtkTreeModel *model;
	GtkTreeIter *iter;
	GtkTreeIter child;
	struct result_data *rd;
	struct search *search;
	record_t *rc;

	search = search_ptr;
	iter = iter_ptr;
	model = gtk_tree_view_get_model(GTK_TREE_VIEW(search->tree));

	g_assert(search->items > 0);
	search->items--;

	rd = get_result_data(model, iter);
	rc = rd->record;

	/* First get the record, it must be unreferenced at the end */
	g_assert(rc->refcount > 1);

	if (gtk_tree_model_iter_nth_child(model, &child, iter, 0)) {
		struct result_data *child_data, tmp;
		guint children;

		child_data = get_result_data(model, &child);

		/*
		 * Copy the contents of the first child's row into the parent's row
		 */

		children = rd->children;
		tmp = *rd;
		*rd = *child_data;
		*child_data = tmp;

		rd->iter = *iter;
		rd->children = children;

		/* And remove the child's row */
		iter = &child;
	} else {
		/*
		 * The row has no children, it's either a child or a top-level node
		 * without children.
		 */
	}
	prepare_remove_record(model, NULL, iter, search);
	gtk_tree_store_remove(GTK_TREE_STORE(model), iter);
	w_tree_iter_free(iter_ptr);
}