File: event-editor-Fix-template-update-when-updating-all-events.patch

package info (click to toggle)
gnome-calendar 49.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,160 kB
  • sloc: ansic: 32,304; xml: 131; makefile: 8
file content (76 lines) | stat: -rw-r--r-- 3,658 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
From: Trystan Mata <trystan.mata@tytanium.xyz>
Date: Mon, 1 Sep 2025 15:41:21 +0200
Subject: event-editor: Fix template update when updating all events

Change how the template end date is determined by mainly relying on the
new template start date:
- If all day, end date is start date plus 1 day (midnight enforced)
- If time-based, end date is start date plus the time span of the event
  properties

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/652>
(cherry picked from commit b79749e811302f3675bd7c3d8f5d54189ef29b2c)

Origin: future 49.1
---
 src/gui/event-editor/gcal-event-editor-dialog.c | 33 ++++++-------------------
 1 file changed, 7 insertions(+), 26 deletions(-)

diff --git a/src/gui/event-editor/gcal-event-editor-dialog.c b/src/gui/event-editor/gcal-event-editor-dialog.c
index 0c6b259..a7ef425 100644
--- a/src/gui/event-editor/gcal-event-editor-dialog.c
+++ b/src/gui/event-editor/gcal-event-editor-dialog.c
@@ -140,16 +140,12 @@ apply_event_properties_to_template_event (GcalEvent *template_event,
   g_autoptr (GList) alarms =  gcal_event_get_alarms (event);
   GDateTime *template_start_date;
   GDateTime *event_start_date;
-  GDateTime *template_end_date;
   GDateTime *event_end_date;
-  gboolean was_all_day;
   gboolean is_all_day;
 
   is_all_day = gcal_event_get_all_day (event);
-  was_all_day = gcal_event_get_all_day (template_event);
 
   template_start_date = gcal_event_get_date_start (template_event);
-  template_end_date = gcal_event_get_date_end (template_event);
   event_start_date = gcal_event_get_date_start (event);
   event_end_date = gcal_event_get_date_end (event);
 
@@ -157,29 +153,14 @@ apply_event_properties_to_template_event (GcalEvent *template_event,
                                 g_date_time_get_year (template_start_date),
                                 g_date_time_get_month (template_start_date),
                                 g_date_time_get_day_of_month (template_start_date),
-                                g_date_time_get_hour (event_start_date),
-                                g_date_time_get_minute (event_start_date),
-                                g_date_time_get_second (event_start_date));
-
-  end_date = g_date_time_new (g_date_time_get_timezone (event_end_date),
-                              g_date_time_get_year (template_end_date),
-                              g_date_time_get_month (template_end_date),
-                              g_date_time_get_day_of_month (template_end_date),
-                              g_date_time_get_hour (event_end_date),
-                              g_date_time_get_minute (event_end_date),
-                              g_date_time_get_second (event_end_date));
-
-  if (was_all_day != is_all_day)
-    {
-      g_autoptr (GDateTime) fake_end_date = NULL;
-
-      if (is_all_day)
-        fake_end_date = g_date_time_add_days (end_date, -1);
-      else
-        fake_end_date = g_date_time_add_days (end_date, 1);
+                                is_all_day ? 0 : g_date_time_get_hour (event_start_date),
+                                is_all_day ? 0 : g_date_time_get_minute (event_start_date),
+                                is_all_day ? 0 : g_date_time_get_second (event_start_date));
 
-      gcal_set_date_time (&end_date, fake_end_date);
-    }
+  if (is_all_day)
+    end_date = g_date_time_add_days (start_date, 1);
+  else
+    end_date = g_date_time_add (start_date, g_date_time_difference (event_end_date, event_start_date));
 
   gcal_event_set_summary (template_event, gcal_event_get_summary (event));
   gcal_event_set_location (template_event, gcal_event_get_location (event));