diff options
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | gtk-gui.c | 2 | ||||
-rw-r--r-- | planner.c | 8 |
3 files changed, 8 insertions, 4 deletions
@@ -597,7 +597,7 @@ struct diveplan { extern void test_planner(void); void plan(struct diveplan *diveplan, char **cache_datap, struct dive **divep); void plan_add_segment(struct diveplan *diveplan, int duration, int depth, int o2, int he); -void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration); +void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel); void add_depth_to_nth_dp(struct diveplan *diveplan, int idx, int depth); void add_gas_to_nth_dp(struct diveplan *diveplan, int idx, int o2, int he); void free_dps(struct divedatapoint *dp); @@ -1395,7 +1395,7 @@ static gboolean duration_focus_out_cb(GtkWidget *entry, GdkEvent * event, gpoint durationtext = strdup(gtk_entry_get_text(GTK_ENTRY(entry))); if (validate_time(durationtext, &duration, &is_rel)) { - add_duration_to_nth_dp(&diveplan, idx, duration); + add_duration_to_nth_dp(&diveplan, idx, duration, is_rel); show_planned_dive(); } else { /* we need to instead change the color of the input field or something */ @@ -179,9 +179,13 @@ struct divedatapoint *get_nth_dp(struct diveplan *diveplan, int idx) return dp; } -void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration) +void add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel) { - struct divedatapoint *dp = get_nth_dp(diveplan, idx); + struct divedatapoint *pdp, *dp = get_nth_dp(diveplan, idx); + if (idx > 0 && is_rel) { + pdp = get_nth_dp(diveplan, idx - 1); + duration += pdp->time; + } dp->time = duration; } |