https://bugzilla.redhat.com/show_bug.cgi?id=552022 diff -up gkrellm-volume/volume.c~ gkrellm-volume/volume.c --- gkrellm-volume/volume.c~ 2004-08-19 23:07:27.000000000 +0300 +++ gkrellm-volume/volume.c 2010-01-04 21:18:25.000000000 +0200 @@ -620,72 +620,47 @@ device_name_edited(GtkCellRendererText * } static void up_clicked(GtkWidget *widget,gpointer user_data) { - GtkTreeIter selected,up,new; + GtkTreeIter selected,up; GtkTreeView *view = GTK_TREE_VIEW(user_data); GtkTreeSelection *selection; GtkTreeModel *model; GtkTreePath *path; - gchar *name,*id; - gpointer *child_model,*nb; selection = gtk_tree_view_get_selection(view); if (!gtk_tree_selection_get_selected(selection,&model,&selected)) return; - gtk_tree_model_get(model,&selected, - ID_COLUMN,&id, - NAME_COLUMN,&name, - C_MODEL_COLUMN,&child_model, - C_NB_COLUMN,&nb, - -1); path = gtk_tree_model_get_path(model,&selected); - if (!gtk_tree_path_prev(path)) return; - if (!gtk_tree_model_get_iter(model,&up,path)) return; - gtk_list_store_remove(GTK_LIST_STORE(model),&selected); - gtk_list_store_insert_before(GTK_LIST_STORE(model),&new,&up); - - gtk_list_store_set(GTK_LIST_STORE(model),&new, - ID_COLUMN,id, - NAME_COLUMN,name, - C_MODEL_COLUMN,child_model, - C_NB_COLUMN,nb, - -1); + if (!gtk_tree_path_prev(path)) goto out; + if (!gtk_tree_model_get_iter(model,&up,path)) goto out; + + gtk_list_store_swap(GTK_LIST_STORE(model),&selected,&up); mixer_config_changed = TRUE; + out: + gtk_tree_path_free(path); } static void down_clicked(GtkWidget *widget,gpointer user_data) { - GtkTreeIter selected,down,new; + GtkTreeIter selected,down; GtkTreeView *view = GTK_TREE_VIEW(user_data); GtkTreeSelection *selection; GtkTreeModel *model; GtkTreePath *path; - gchar *name,*id; - gpointer *child_model,*nb; selection = gtk_tree_view_get_selection(view); if (!gtk_tree_selection_get_selected(selection,&model,&selected)) return; - gtk_tree_model_get(model,&selected, - ID_COLUMN,&id, - NAME_COLUMN,&name, - C_MODEL_COLUMN,&child_model, - C_NB_COLUMN,&nb, - -1); path = gtk_tree_model_get_path(model,&selected); gtk_tree_path_next(path); - if (!gtk_tree_model_get_iter(model,&down,path)) return; - gtk_list_store_insert_after(GTK_LIST_STORE(model),&new,&down); + if (!gtk_tree_model_get_iter(model,&down,path)) goto out; - gtk_list_store_set(GTK_LIST_STORE(model),&new, - ID_COLUMN,id, - NAME_COLUMN,name, - C_MODEL_COLUMN,child_model, - C_NB_COLUMN,nb, - -1); + gtk_list_store_swap(GTK_LIST_STORE(model),&selected,&down); mixer_config_changed = TRUE; - gtk_list_store_remove(GTK_LIST_STORE(model),&selected); + + out: + gtk_tree_path_free(path); } static GtkWidget *