Multiple calls to remove item from history don't work #21.
After removing items from widget's model, subsequent items need to be reindexed to correctly point at items in history's data sructure.
This commit is contained in:
parent
31a12b8ebd
commit
68eb16f929
14
src/manage.c
14
src/manage.c
|
@ -199,7 +199,8 @@ static void remove_selected()
|
||||||
gint selected_count = gtk_tree_selection_count_selected_rows(search_selection);
|
gint selected_count = gtk_tree_selection_count_selected_rows(search_selection);
|
||||||
if (selected_count > 0) {
|
if (selected_count > 0) {
|
||||||
gint i;
|
gint i;
|
||||||
GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model((GtkTreeView*)treeview_search));
|
GtkTreeModel *model = gtk_tree_view_get_model((GtkTreeView*)treeview_search);
|
||||||
|
GtkListStore *store = GTK_LIST_STORE(model);
|
||||||
GArray *sel = g_array_new(FALSE, FALSE, sizeof(GtkTreeIter));
|
GArray *sel = g_array_new(FALSE, FALSE, sizeof(GtkTreeIter));
|
||||||
gtk_tree_selection_selected_foreach(search_selection, add_iter, sel);
|
gtk_tree_selection_selected_foreach(search_selection, add_iter, sel);
|
||||||
gtk_tree_selection_unselect_all(search_selection);
|
gtk_tree_selection_unselect_all(search_selection);
|
||||||
|
@ -207,8 +208,15 @@ static void remove_selected()
|
||||||
gint remove_item;
|
gint remove_item;
|
||||||
GtkTreeIter *iter = &g_array_index(sel, GtkTreeIter, i);
|
GtkTreeIter *iter = &g_array_index(sel, GtkTreeIter, i);
|
||||||
gtk_tree_model_get((GtkTreeModel*)search_list, iter, 0, &remove_item, -1);
|
gtk_tree_model_get((GtkTreeModel*)search_list, iter, 0, &remove_item, -1);
|
||||||
history = g_list_remove(history, g_list_nth_data(history, remove_item-i));
|
history = g_list_remove(history, g_list_nth_data(history, remove_item));
|
||||||
gtk_list_store_remove(store, iter);
|
if (!gtk_list_store_remove(store, iter))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
do {
|
||||||
|
gint item;
|
||||||
|
gtk_tree_model_get(model, iter, 0, &item, -1);
|
||||||
|
gtk_list_store_set(store, iter, 0, item - 1, -1);
|
||||||
|
} while (gtk_tree_model_iter_next(model, iter));
|
||||||
}
|
}
|
||||||
g_array_free(sel, TRUE);
|
g_array_free(sel, TRUE);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user