From a98ef01673f67d666ac9989963a358edea1ff3a2 Mon Sep 17 00:00:00 2001 From: Jeremy Karst Date: Wed, 7 Jan 2026 19:32:33 -0500 Subject: [PATCH 1/2] Enhancement: Improve default time suggestions for newly created items marked already finished. --- timetagger/app/dialogs.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/timetagger/app/dialogs.py b/timetagger/app/dialogs.py index 638c727..1174e88 100644 --- a/timetagger/app/dialogs.py +++ b/timetagger/app/dialogs.py @@ -837,6 +837,20 @@ def _on_mode_change(self): if self.radio_startrlr.checked: self.reset(t1, t1) else: + if self.radio_finished.checked: # If the user just checked the finished radio butotn + range_t1, range_t2 = window.canvas.range.get_range() + now = dt.now() + # If the current time is on the currently viewed day, assume that + # the user forgot to hit "start now" and use the current time as + # the default end of the event, and -1 hour as the default start time. + if range_t1 <= now <= range_t2: + t1 = now - 3600 + t2 = now + else: # Otherwise assume the user is filling in a historical event on the viewed day + t1, t2 = window.canvas.range.get_range() + # If t2 - t1 is exactly 1 day, subtract 5 minutes from t2 to make it the same day as t1 + if t2 - t1 == 86400: + t2 = t2 - 300 self.reset(t1, t2) else: # Switch between "already running" and "finished". From 46baff723d107f0e4c46709b512db7aaa487342b Mon Sep 17 00:00:00 2001 From: Jeremy Karst Date: Wed, 7 Jan 2026 20:30:32 -0500 Subject: [PATCH 2/2] Fix: Bug where changing time2 would cause time1 to be changed even mid-change or during submission. --- timetagger/app/dialogs.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/timetagger/app/dialogs.py b/timetagger/app/dialogs.py index 1174e88..af7b4da 100644 --- a/timetagger/app/dialogs.py +++ b/timetagger/app/dialogs.py @@ -1086,10 +1086,11 @@ def onchanged(self, action): mm, ss = mm + self._stepwise_delta(mm, -(_stepsize)), 0 d1 = window.Date(year1, month1 - 1, day1, hh, mm, ss) self.t1 = dt.to_time_int(d1) - if self.ori_t1 == self.ori_t2: - self.t2 = self.t1 = min(self.t1, now) - elif self.t1 >= self.t2: - self.t2 = self.t1 + 1 + + if self.ori_t1 == self.ori_t2: + self.t2 = self.t1 = min(self.t1, now) + elif self.t1 >= self.t2: + self.t2 = self.t1 + 1 elif what == "time2": # Changing time2 -> update t2, keep t1 and t2 in check @@ -1108,11 +1109,12 @@ def onchanged(self, action): mm, ss = mm + self._stepwise_delta(mm, -(_stepsize)), 0 d2 = window.Date(year2, month2 - 1, day2, hh, mm, ss) self.t2 = dt.to_time_int(d2) - if self.ori_t1 == self.ori_t2: - self.t2 = self.t1 - elif self.t2 <= self.t1: - self.t1 = self.t2 - self.t2 = self.t1 + 1 + + if self.ori_t1 == self.ori_t2: + self.t2 = self.t1 + elif self.t2 <= self.t1: + self.t1 = self.t2 + self.t2 = self.t1 + 1 elif what == "duration": # Changing duration -> update t2, but keep it in check