[gnome-calendar] quick-add-popover: fix event creation again
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] quick-add-popover: fix event creation again
- Date: Thu, 18 Feb 2016 06:05:14 +0000 (UTC)
commit fd6d6e97c97f1f0e3e60321401d865addab849a2
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Feb 18 03:56:55 2016 -0200
quick-add-popover: fix event creation again
src/gcal-edit-dialog.c | 10 ++++++----
src/gcal-event.c | 25 ++++++++++++++-----------
src/gcal-month-view.c | 32 ++++++++++++++++++++++----------
src/gcal-quick-add-popover.c | 2 ++
4 files changed, 44 insertions(+), 25 deletions(-)
---
diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c
index ee5bc86..62a253a 100644
--- a/src/gcal-edit-dialog.c
+++ b/src/gcal-edit-dialog.c
@@ -607,6 +607,7 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
if (!event)
goto out;
+ all_day = gcal_event_get_all_day (event);
source = gcal_event_get_source (event);
/* Clear event data */
@@ -636,8 +637,11 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
e_source_get_display_name (source));
/* retrieve start and end dates */
- date_start = g_date_time_to_local (gcal_event_get_date_start (event));
- date_end = g_date_time_to_local (gcal_event_get_date_end (event));
+ date_start = gcal_event_get_date_start (event);
+ date_start = all_day ? g_date_time_ref (date_start) : g_date_time_to_local (date_start);
+
+ date_end = gcal_event_get_date_end (event);
+ date_end = all_day ? g_date_time_ref (date_end) : g_date_time_to_local (date_end);
/* date */
gcal_date_selector_set_date (GCAL_DATE_SELECTOR (dialog->start_date_selector), date_start);
@@ -648,8 +652,6 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
gcal_time_selector_set_time (GCAL_TIME_SELECTOR (dialog->end_time_selector), date_end);
/* all_day */
- all_day = gcal_event_get_all_day (event);
-
gtk_widget_set_sensitive (dialog->start_time_selector, dialog->writable && !all_day);
gtk_widget_set_sensitive (dialog->end_time_selector, dialog->writable && !all_day);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->all_day_check), all_day);
diff --git a/src/gcal-event.c b/src/gcal-event.c
index cb562d6..2ccd946 100644
--- a/src/gcal-event.c
+++ b/src/gcal-event.c
@@ -1000,28 +1000,31 @@ gcal_event_set_timezone (GcalEvent *self,
if (self->timezone != timezone)
{
- GDateTime *new_dtstart;
-
g_clear_pointer (&self->timezone, g_time_zone_unref);
self->timezone = g_time_zone_ref (timezone);
/* Swap the timezone from the component start & end dates*/
- new_dtstart = g_date_time_to_timezone (self->dt_start, timezone);
- gcal_event_set_date_start (self, new_dtstart);
-
- if (self->dt_end)
+ if (!self->all_day)
{
- GDateTime *new_dtend;
+ GDateTime *new_dtstart;
+
+ new_dtstart = g_date_time_to_timezone (self->dt_start, timezone);
+ gcal_event_set_date_start (self, new_dtstart);
- new_dtend = g_date_time_to_timezone (self->dt_end, timezone);
- gcal_event_set_date_end (self, new_dtend);
+ if (self->dt_end)
+ {
+ GDateTime *new_dtend;
+
+ new_dtend = g_date_time_to_timezone (self->dt_end, timezone);
+ gcal_event_set_date_end (self, new_dtend);
+
+ g_clear_pointer (&new_dtstart, g_date_time_unref);
+ }
g_clear_pointer (&new_dtstart, g_date_time_unref);
}
g_object_notify (G_OBJECT (self), "timezone");
-
- g_clear_pointer (&new_dtstart, g_date_time_unref);
}
}
diff --git a/src/gcal-month-view.c b/src/gcal-month-view.c
index ca87a50..ba2b66e 100644
--- a/src/gcal-month-view.c
+++ b/src/gcal-month-view.c
@@ -264,8 +264,8 @@ show_popover_for_position (GcalMonthView *view,
{
GDateTime *start_dt, *end_dt;
- start_dt = g_date_time_new_local (priv->date->year, priv->date->month, start_day, 0, 0, 0);
- end_dt = g_date_time_new_local (priv->date->year, priv->date->month, end_day + 1, 0, 0, 0);
+ start_dt = g_date_time_new_utc (priv->date->year, priv->date->month, start_day, 0, 0, 0);
+ end_dt = g_date_time_new_utc (priv->date->year, priv->date->month, end_day + 1, 0, 0, 0);
/* Swap dates if start > end */
if (start_day > end_day)
@@ -750,7 +750,7 @@ add_new_event_button_cb (GtkWidget *button,
gtk_widget_hide (priv->overflow_popover);
day = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (priv->overflow_popover), "selected-day"));
- start_date = g_date_time_new_local (priv->date->year, priv->date->month, day, 0, 0, 0);
+ start_date = g_date_time_new_utc (priv->date->year, priv->date->month, day, 0, 0, 0);
g_signal_emit_by_name (GCAL_VIEW (user_data), "create-event-detailed", start_date, NULL);
@@ -1081,7 +1081,7 @@ gcal_month_view_size_allocate (GtkWidget *widget,
for (l = ppriv->multi_cell_children; l != NULL; l = g_list_next (l))
{
gint first_cell, last_cell, first_row, last_row, start, end;
- gboolean visible;
+ gboolean visible, all_day;
GDateTime *date;
GcalEvent *event;
@@ -1090,6 +1090,7 @@ gcal_month_view_size_allocate (GtkWidget *widget,
child_widget = (GtkWidget*) l->data;
event = gcal_event_widget_get_event (l->data);
uuid = gcal_event_get_uid (event);
+ all_day = gcal_event_get_all_day (event);
if (!gtk_widget_is_visible (child_widget) && !g_hash_table_contains (ppriv->hidden_as_overflow, uuid))
continue;
@@ -1103,7 +1104,8 @@ gcal_month_view_size_allocate (GtkWidget *widget,
* month. Otherwise, the first cell is the 1st day of the month.
*/
j = 1;
- date = g_date_time_to_local (gcal_event_get_date_start (event));
+ date = gcal_event_get_date_start (event);
+ date = all_day ? g_date_time_ref (date) : g_date_time_to_local (date);
if (g_date_time_get_month (date) == priv->date->month)
j = g_date_time_get_day_of_month (date);
@@ -1123,14 +1125,15 @@ gcal_month_view_size_allocate (GtkWidget *widget,
* if the event is all day or not.
*/
j = icaltime_days_in_month (priv->date->month, priv->date->year);
- date = g_date_time_to_local (gcal_event_get_date_end (event));
+ date = gcal_event_get_date_end (event);
+ date = all_day ? g_date_time_ref (date) : g_date_time_to_local (date);
if (g_date_time_get_month (date) == priv->date->month)
{
j = g_date_time_get_day_of_month (date);
/* If the event is all day, we have to subtract 1 to find the the real date */
- if (gcal_event_get_all_day (event))
+ if (all_day)
j--;
}
j += priv->days_delay;
@@ -1855,11 +1858,20 @@ gcal_month_view_get_child_cell (GcalSubscriberView *subscriber,
gint cell;
event = gcal_event_widget_get_event (child);
- dt = g_date_time_to_local (gcal_event_get_date_start (event));
+ dt = gcal_event_get_date_start (event);
- cell = g_date_time_get_day_of_month (dt);
+ /* Don't adjust the date when the event is all day */
+ if (gcal_event_get_all_day (event))
+ {
+ cell = g_date_time_get_day_of_month (dt);
+ }
+ else
+ {
+ dt = g_date_time_to_local (dt);
+ cell = g_date_time_get_day_of_month (dt);
- g_clear_pointer (&dt, g_date_time_unref);
+ g_clear_pointer (&dt, g_date_time_unref);
+ }
return cell;
}
diff --git a/src/gcal-quick-add-popover.c b/src/gcal-quick-add-popover.c
index 744afc1..81948c7 100644
--- a/src/gcal-quick-add-popover.c
+++ b/src/gcal-quick-add-popover.c
@@ -406,7 +406,9 @@ edit_or_create_event (GcalQuickAddPopover *self,
/* Create an ECalComponent from the data above */
component = build_component_from_details (summary, date_start, date_end);
+
event = gcal_event_new (source, component);
+ gcal_event_set_all_day (event, TRUE);
/* If we clicked edit button, send a signal; otherwise, create the event */
if (button == self->add_button)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]