Re: Help removing GtkListStore rows



Ok

A fixed "remove" function from the treestoretest.c example:

static void
iter_remove (GtkWidget *button, GtkTreeView *tree_view)
{
	GtkTreeIter selected, selected_sort;
	GtkTreeModel *model;
	GtkTreeModelSort *model_sort;
	GtkTreePath *path_sort, *path;

	if( gtk_tree_selection_get_selected
		( gtk_tree_view_get_selection( tree_view ),
			&model, &selected ) )
	{
		if( GTK_IS_TREE_MODEL_SORT( model ) ) {
			model_sort = GTK_TREE_MODEL_SORT( model );
			model = gtk_tree_model_sort_get_model( model_sort );
			gtk_tree_model_sort_convert_iter_to_child_iter
				( model_sort, &selected_sort, &selected );
			path = gtk_tree_model_get_path( model, &selected_sort );
			path_sort = gtk_tree_model_sort_convert_child_path_to_path
				( model_sort, path );
			gtk_tree_path_free( path );
			gtk_tree_store_remove( GTK_TREE_STORE( model ), &selected_sort );
			if( gtk_tree_model_get_iter( model, &selected, path_sort )
				|| gtk_tree_path_prev( path_sort ) )
			{
				gtk_tree_selection_select_path
					( gtk_tree_view_get_selection( tree_view ), path_sort );
			}
			gtk_tree_path_free( path_sort );
		}
		else if( GTK_IS_TREE_STORE( model ) )
		{
			path = gtk_tree_model_get_path( model, &selected );
			if( gtk_tree_store_remove( GTK_TREE_STORE( model ), &selected ) ) {
				gtk_tree_selection_select_iter
					( gtk_tree_view_get_selection( tree_view ), &selected );
			}
			else {
				if( gtk_tree_path_prev( path ) )
					gtk_tree_selection_select_path
						( gtk_tree_view_get_selection( tree_view ), path );
			}
			gtk_tree_path_free( path );
		}
	}
}

HTH

Jan-Marek



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