mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
Make the cylinder 'delete' action actually delete the cylinder info
It used to just update the cylinder list widget data, not the actual dive information. It still needs an "accept or cancel" dialog, I suspect. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ed157e4288
commit
3e1b3c5c7f
1 changed files with 16 additions and 1 deletions
17
equipment.c
17
equipment.c
|
@ -524,10 +524,12 @@ static void add_cb(GtkButton *button, gpointer data)
|
|||
|
||||
static void del_cb(GtkButton *button, gpointer data)
|
||||
{
|
||||
int index;
|
||||
int index, nr;
|
||||
GtkTreeIter iter;
|
||||
GtkListStore *model = cylinder_list.model;
|
||||
GtkTreeSelection *selection;
|
||||
struct dive *dive;
|
||||
cylinder_t *cyl;
|
||||
|
||||
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cylinder_list.tree_view));
|
||||
|
||||
|
@ -536,6 +538,13 @@ static void del_cb(GtkButton *button, gpointer data)
|
|||
return;
|
||||
|
||||
gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CYL_INDEX, &index, -1);
|
||||
|
||||
dive = current_dive;
|
||||
if (!dive)
|
||||
return;
|
||||
cyl = dive->cylinder + index;
|
||||
nr = cylinder_list.max_index - index - 1;
|
||||
|
||||
if (gtk_list_store_remove(model, &iter)) {
|
||||
do {
|
||||
gtk_list_store_set(model, &iter, CYL_INDEX, index, -1);
|
||||
|
@ -544,6 +553,12 @@ static void del_cb(GtkButton *button, gpointer data)
|
|||
}
|
||||
|
||||
cylinder_list.max_index--;
|
||||
memmove(cyl, cyl+1, nr*sizeof(*cyl));
|
||||
memset(cyl+nr, 0, sizeof(*cyl));
|
||||
|
||||
mark_divelist_changed(TRUE);
|
||||
flush_divelist(dive);
|
||||
|
||||
gtk_widget_set_sensitive(cylinder_list.edit, 0);
|
||||
gtk_widget_set_sensitive(cylinder_list.del, 0);
|
||||
gtk_widget_set_sensitive(cylinder_list.add, 1);
|
||||
|
|
Loading…
Reference in a new issue