add: totem_playlist_update_save_button (playlist);
context: totem_playlist_remove_files (GtkWidget *widget, TotemPlaylist *playlist){	GtkTreeSelection *selection;	GtkTreeRowReference *ref;	gboolean is_selected = FALSE;	int next_pos;	selection = gtk_tree_view_get_selection		(GTK_TREE_VIEW (playlist->_priv->treeview));	if (selection == NULL)		return;	gtk_tree_selection_selected_foreach (selection,			totem_playlist_foreach_selected,			(gpointer) playlist);	/* If the current item is to change, we need to keep an static	 * reference to it, TreeIter and TreePath don't allow that */	if (playlist->_priv->current != NULL)	{		int *indices;		ref = gtk_tree_row_reference_new (playlist->_priv->model,				playlist->_priv->current);		is_selected = gtk_tree_selection_path_is_selected (selection,				playlist->_priv->current);		indices = gtk_tree_path_get_indices (playlist->_priv->current);		next_pos = indices[0];		gtk_tree_path_free (playlist->_priv->current);	} else {		ref = NULL;		next_pos = -1;	}	/* We destroy the items, one-by-one from the list built above */	while (playlist->_priv->list != NULL)	{		GtkTreePath *path;		GtkTreeIter iter;		path = gtk_tree_row_reference_get_path			((GtkTreeRowReference *)(playlist->_priv->list->data));		gtk_tree_model_get_iter (playlist->_priv->model, &iter, path);		gtk_tree_path_free (path);		gtk_list_store_remove (GTK_LIST_STORE (playlist->_priv->model),				&iter);		gtk_tree_row_reference_free			((GtkTreeRowReference *)(playlist->_priv->list->data));		playlist->_priv->list = g_list_remove (playlist->_priv->list,				playlist->_priv->list->data);	}	g_list_free (playlist->_priv->list);	playlist->_priv->list = NULL;	if (is_selected != FALSE)	{		/* The current item was removed from the playlist */		if (next_pos != -1)		{			char *str;			GtkTreeIter iter;			GtkTreePath *cur;			str = g_strdup_printf ("%d", next_pos);			cur = gtk_tree_path_new_from_string (str);			if (gtk_tree_model_get_iter (playlist->_priv->model,						&iter, cur) == FALSE)			{				playlist->_priv->current = NULL;				gtk_tree_path_free (cur);			} else {				playlist->_priv->current = cur;			}			g_free (str);		} else {			playlist->_priv->current = NULL;		}		playlist->_priv->current_shuffled = -1;		ensure_shuffled (playlist, playlist->_priv->shuffle);		g_signal_emit (G_OBJECT (playlist),				totem_playlist_table_signals[CURRENT_REMOVED],				0, NULL);	} else {		if (ref != NULL)		{			/* The path to the current item changed */			playlist->_priv->current =				gtk_tree_row_reference_get_path (ref);			gtk_tree_row_reference_free (ref);		}		ensure_shuffled (playlist, playlist->_priv->shuffle);		g_signal_emit (G_OBJECT (playlist),				totem_playlist_table_signals[CHANGED], 0,				NULL);	}}