@@ -202,18 +202,22 @@ def on_end_time_changed(self, widget):
202202
203203 def on_start_date_changed (self , widget ):
204204 if not self .master_is_cmdline :
205- if self .fact .start_time :
206- previous_date = self .fact .start_time .date ()
207- new_date = self .start_date .date
208- delta = new_date - previous_date
209- self .fact .start_time += delta
210- if self .fact .end_time :
211- # preserve fact duration
212- self .fact .end_time += delta
213- self .end_date .date = self .fact .end_time
214- self .date = self .fact .date or hamster_today ()
215- self .validate_fields ()
216- self .update_cmdline ()
205+ new_date = self .start_date .date
206+ self .change_start_date (new_date )
207+
208+ def change_start_date (self , new_date ):
209+ if self .fact .start_time :
210+ previous_date = self .fact .start_time .date ()
211+ new_date = self .start_date .date
212+ delta = new_date - previous_date
213+ self .fact .start_time += delta
214+ if self .fact .end_time :
215+ # preserve fact duration
216+ self .fact .end_time += delta
217+ self .end_date .date = self .fact .end_time
218+ self .date = self .fact .date or hamster_today ()
219+ self .validate_fields ()
220+ self .update_cmdline ()
217221
218222 def on_start_date_expander_activated (self , widget ):
219223 # state has not changed yet, toggle also end_date calendar visibility
@@ -261,8 +265,8 @@ def update_fields(self):
261265 self .start_time .time = self .fact .start_time
262266 self .end_time .time = self .fact .end_time
263267 self .end_time .set_start_time (self .fact .start_time )
264- self .start_date .date = self .fact .start_time
265- self .end_date .date = self .fact .end_time
268+ self .start_date .date = self .fact .date or self . date
269+ self .end_date .date = self .fact .date or self . date
266270 self .activity_entry .set_text (self .fact .activity )
267271 self .category_entry .set_text (self .fact .category )
268272 self .description_buffer .set_text (self .fact .description )
0 commit comments