summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--divelist.c11
-rw-r--r--divelist.h2
-rw-r--r--equipment.c13
3 files changed, 18 insertions, 8 deletions
diff --git a/divelist.c b/divelist.c
index eb8f23143..bf853ec0e 100644
--- a/divelist.c
+++ b/divelist.c
@@ -335,6 +335,14 @@ static int calculate_sac(struct dive *dive)
return sac * 1000;
}
+void update_cylinder_related_info(struct dive *dive)
+{
+ if(dive != NULL) {
+ dive->sac = calculate_sac(dive);
+ dive->otu = calculate_otu(dive);
+ }
+}
+
static void get_string(char **str, const char *s)
{
int len;
@@ -452,8 +460,7 @@ static void fill_dive_list(void)
for (i = 0; i < dive_table.nr; i++) {
struct dive *dive = dive_table.dives[i];
- dive->otu = calculate_otu(dive);
- dive->sac = calculate_sac(dive);
+ update_cylinder_related_info(dive);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
DIVE_INDEX, i,
diff --git a/divelist.h b/divelist.h
index 2635b7541..c170941db 100644
--- a/divelist.h
+++ b/divelist.h
@@ -7,7 +7,7 @@ extern void dive_list_update_dives(void);
extern void update_dive_list_col_visibility(void);
extern void update_dive_list_units(void);
extern void flush_divelist(struct dive *);
-
+extern void update_cylinder_related_info(struct dive *);
extern void mark_divelist_changed(int);
extern int unsaved_changes(void);
#endif
diff --git a/equipment.c b/equipment.c
index 19abbe672..dbe1f0f13 100644
--- a/equipment.c
+++ b/equipment.c
@@ -416,12 +416,14 @@ static void record_cylinder_changes(cylinder_t *cyl, struct cylinder_widget *cyl
desc = gtk_combo_box_get_active_text(box);
volume = gtk_spin_button_get_value(cylinder->size);
pressure = gtk_spin_button_get_value(cylinder->pressure);
- start = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->start));
- end = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->end));
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->pressure_button)))
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->pressure_button))) {
+ start = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->start));
+ end = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->end));
+ } else
start = end = 0;
- o2 = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->o2))*10 + 0.5;
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->gasmix_button)))
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cylinder->gasmix_button)))
+ o2 = gtk_spin_button_get_value(GTK_SPIN_BUTTON(cylinder->o2))*10 + 0.5;
+ else
o2 = 0;
fill_cylinder_info(cylinder, cyl, desc, volume, pressure, start, end, o2);
}
@@ -643,6 +645,7 @@ static int edit_cylinder_dialog(int index, cylinder_t *cyl)
record_cylinder_changes(cyl, &cylinder);
dive->cylinder[index] = *cyl;
mark_divelist_changed(TRUE);
+ update_cylinder_related_info(dive);
flush_divelist(dive);
}