[evolution] I#518 - Handle different DTSTART/DTEND timezones properly
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#518 - Handle different DTSTART/DTEND timezones properly
- Date: Tue, 13 Aug 2019 09:15:12 +0000 (UTC)
commit 79a67de77fd17b2c6be34b8711202bc15662fe11
Author: Milan Crha <mcrha redhat com>
Date: Tue Aug 13 11:13:05 2019 +0200
I#518 - Handle different DTSTART/DTEND timezones properly
Closes https://gitlab.gnome.org/GNOME/evolution/issues/518
src/calendar/gui/e-cal-model-calendar.c | 70 +----------
src/calendar/gui/e-cal-model-tasks.c | 57 ++-------
src/calendar/gui/e-cal-model.c | 151 ++++++++++++++++++------
src/calendar/gui/e-cal-model.h | 6 +
src/calendar/gui/e-calendar-view.c | 21 +++-
src/calendar/gui/e-comp-editor-event.c | 11 +-
src/calendar/gui/e-comp-editor-property-parts.c | 36 +-----
src/calendar/gui/e-comp-editor-task.c | 43 +++++--
8 files changed, 191 insertions(+), 204 deletions(-)
---
diff --git a/src/calendar/gui/e-cal-model-calendar.c b/src/calendar/gui/e-cal-model-calendar.c
index 99d82b441d..7e162f77aa 100644
--- a/src/calendar/gui/e-cal-model-calendar.c
+++ b/src/calendar/gui/e-cal-model-calendar.c
@@ -49,75 +49,9 @@ static ECellDateEditValue *
get_dtend (ECalModelCalendar *model,
ECalModelComponent *comp_data)
{
- ICalTime *tt_end;
-
if (!comp_data->dtend) {
- ICalProperty *prop;
- ICalTimezone *zone = NULL, *model_zone = NULL;
- gboolean got_zone = FALSE, is_date;
-
- prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_DTEND_PROPERTY);
- if (!prop)
- return NULL;
-
- tt_end = i_cal_property_get_dtend (prop);
-
- if (i_cal_time_get_tzid (tt_end) &&
- e_cal_client_get_timezone_sync (comp_data->client, i_cal_time_get_tzid (tt_end), &zone,
NULL, NULL))
- got_zone = TRUE;
-
- model_zone = e_cal_model_get_timezone (E_CAL_MODEL (model));
-
- is_date = i_cal_time_is_date (tt_end);
-
- g_clear_object (&tt_end);
- g_clear_object (&prop);
-
- if (got_zone) {
- tt_end = i_cal_time_new_from_timet_with_zone (comp_data->instance_end, is_date, zone);
- } else {
- tt_end = i_cal_time_new_from_timet_with_zone (comp_data->instance_end, is_date,
model_zone);
- }
-
- if (!i_cal_time_is_valid_time (tt_end) || i_cal_time_is_null_time (tt_end)) {
- g_clear_object (&tt_end);
- return NULL;
- }
-
- if (i_cal_time_is_date (tt_end) &&
- (prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_DTSTART_PROPERTY))
!= NULL) {
- ICalTime *tt_start;
- ICalTimezone *start_zone = NULL;
- gboolean got_start_zone = FALSE;
-
- tt_start = i_cal_property_get_dtstart (prop);
-
- if (i_cal_time_get_tzid (tt_start) &&
- e_cal_client_get_timezone_sync (comp_data->client, i_cal_time_get_tzid
(tt_start), &start_zone, NULL, NULL))
- got_start_zone = TRUE;
-
- is_date = i_cal_time_is_date (tt_end);
-
- g_clear_object (&tt_start);
-
- if (got_start_zone) {
- tt_start = i_cal_time_new_from_timet_with_zone (comp_data->instance_start,
is_date, start_zone);
- } else {
- tt_start = i_cal_time_new_from_timet_with_zone (comp_data->instance_start,
is_date, model_zone);
- }
-
- i_cal_time_adjust (tt_start, 1, 0, 0, 0);
-
- /* Decrease by a day only if the DTSTART will still be before, or the same as, DTEND
*/
- if (i_cal_time_compare (tt_start, tt_end) <= 0)
- i_cal_time_adjust (tt_end, -1, 0, 0, 0);
-
- g_clear_object (&tt_start);
- }
-
- g_clear_object (&prop);
-
- comp_data->dtend = e_cell_date_edit_value_new_take (tt_end, (got_zone && zone) ?
e_cal_util_copy_timezone (zone) : NULL);
+ comp_data->dtend = e_cal_model_util_get_datetime_value (E_CAL_MODEL (model), comp_data,
+ I_CAL_DTEND_PROPERTY, i_cal_property_get_dtend);
}
return e_cell_date_edit_value_copy (comp_data->dtend);
diff --git a/src/calendar/gui/e-cal-model-tasks.c b/src/calendar/gui/e-cal-model-tasks.c
index c95916d835..c9ce4f30aa 100644
--- a/src/calendar/gui/e-cal-model-tasks.c
+++ b/src/calendar/gui/e-cal-model-tasks.c
@@ -132,61 +132,24 @@ ensure_task_not_complete (ECalModelComponent *comp_data,
}
static ECellDateEditValue *
-get_completed (ECalModelComponent *comp_data)
+get_completed (ECalModel *model,
+ ECalModelComponent *comp_data)
{
if (!comp_data->completed) {
- ICalTime *tt_completed;
- ICalTimezone *zone = NULL;
- ICalProperty *prop;
-
- prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_COMPLETED_PROPERTY);
- if (!prop)
- return NULL;
-
- tt_completed = i_cal_property_get_completed (prop);
- g_clear_object (&prop);
-
- if (!i_cal_time_is_valid_time (tt_completed) || i_cal_time_is_null_time (tt_completed)) {
- g_clear_object (&tt_completed);
- return NULL;
- }
-
- if (!i_cal_time_get_tzid (tt_completed) ||
- !e_cal_client_get_timezone_sync (comp_data->client, i_cal_time_get_tzid (tt_completed),
&zone, NULL, NULL))
- zone = NULL;
-
- comp_data->completed = e_cell_date_edit_value_new_take (tt_completed, zone ?
e_cal_util_copy_timezone (zone) : NULL);
+ comp_data->completed = e_cal_model_util_get_datetime_value (model, comp_data,
+ I_CAL_COMPLETED_PROPERTY, i_cal_property_get_completed);
}
return e_cell_date_edit_value_copy (comp_data->completed);
}
static ECellDateEditValue *
-get_due (ECalModelComponent *comp_data)
+get_due (ECalModel *model,
+ ECalModelComponent *comp_data)
{
if (!comp_data->due) {
- ICalTime *tt_due;
- ICalTimezone *zone = NULL;
- ICalProperty *prop;
-
- prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_DUE_PROPERTY);
- if (!prop)
- return NULL;
-
- tt_due = i_cal_property_get_due (prop);
-
- g_clear_object (&prop);
-
- if (!i_cal_time_is_valid_time (tt_due) || i_cal_time_is_null_time (tt_due)) {
- g_clear_object (&tt_due);
- return NULL;
- }
-
- if (!i_cal_time_get_tzid (tt_due) ||
- !e_cal_client_get_timezone_sync (comp_data->client, i_cal_time_get_tzid (tt_due), &zone,
NULL, NULL))
- zone = NULL;
-
- comp_data->due = e_cell_date_edit_value_new_take (tt_due, zone ? e_cal_util_copy_timezone
(zone) : NULL);
+ comp_data->due = e_cal_model_util_get_datetime_value (model, comp_data,
+ I_CAL_DUE_PROPERTY, i_cal_property_get_due);
}
return e_cell_date_edit_value_copy (comp_data->due);
@@ -863,13 +826,13 @@ cal_model_tasks_value_at (ETableModel *etm,
switch (col) {
case E_CAL_MODEL_TASKS_FIELD_COMPLETED :
- return get_completed (comp_data);
+ return get_completed (E_CAL_MODEL (model), comp_data);
case E_CAL_MODEL_TASKS_FIELD_STRIKEOUT :
return GINT_TO_POINTER (is_status_canceled (comp_data) || is_complete (comp_data));
case E_CAL_MODEL_TASKS_FIELD_COMPLETE :
return GINT_TO_POINTER (is_complete (comp_data));
case E_CAL_MODEL_TASKS_FIELD_DUE :
- return get_due (comp_data);
+ return get_due (E_CAL_MODEL (model), comp_data);
case E_CAL_MODEL_TASKS_FIELD_GEO :
return get_geo (comp_data);
case E_CAL_MODEL_TASKS_FIELD_OVERDUE :
diff --git a/src/calendar/gui/e-cal-model.c b/src/calendar/gui/e-cal-model.c
index 08e1f0bf7a..ed23659d5a 100644
--- a/src/calendar/gui/e-cal-model.c
+++ b/src/calendar/gui/e-cal-model.c
@@ -341,46 +341,9 @@ static ECellDateEditValue *
get_dtstart (ECalModel *model,
ECalModelComponent *comp_data)
{
- ECalModelPrivate *priv;
- ICalTime *tt_start;
-
- priv = model->priv;
-
if (!comp_data->dtstart) {
- ICalProperty *prop;
- ICalTimezone *zone;
- gboolean got_zone = FALSE;
-
- prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_DTSTART_PROPERTY);
- if (!prop)
- return NULL;
-
- tt_start = i_cal_property_get_dtstart (prop);
-
- if (i_cal_time_get_tzid (tt_start)
- && e_cal_client_get_timezone_sync (comp_data->client, i_cal_time_get_tzid (tt_start),
&zone, NULL, NULL))
- got_zone = TRUE;
-
- if (e_cal_data_model_get_expand_recurrences (priv->data_model)) {
- gboolean is_date = i_cal_time_is_date (tt_start);
-
- if (got_zone) {
- g_clear_object (&tt_start);
- tt_start = i_cal_time_new_from_timet_with_zone (comp_data->instance_start,
is_date, zone);
- } else if (priv->zone) {
- g_clear_object (&tt_start);
- tt_start = i_cal_time_new_from_timet_with_zone (comp_data->instance_start,
is_date, priv->zone);
- }
- }
-
- g_object_unref (prop);
-
- if (!i_cal_time_is_valid_time (tt_start) || i_cal_time_is_null_time (tt_start)) {
- g_clear_object (&tt_start);
- return NULL;
- }
-
- comp_data->dtstart = e_cell_date_edit_value_new_take (tt_start, (got_zone && zone) ?
e_cal_util_copy_timezone (zone) : NULL);
+ comp_data->dtstart = e_cal_model_util_get_datetime_value (model, comp_data,
+ I_CAL_DTSTART_PROPERTY, i_cal_property_get_dtstart);
}
return e_cell_date_edit_value_copy (comp_data->dtstart);
@@ -4336,3 +4299,113 @@ e_cal_model_util_status_compare_cb (gconstpointer a,
return status_a - status_b;
}
+
+ECellDateEditValue *
+e_cal_model_util_get_datetime_value (ECalModel *model,
+ ECalModelComponent *comp_data,
+ ICalPropertyKind kind,
+ ICalTime * (*get_time_func) (ICalProperty *prop))
+{
+ ECellDateEditValue *value;
+ ICalProperty *prop;
+ ICalParameter *param = NULL;
+ ICalTimezone *zone = NULL;
+ ICalTime *tt;
+ const gchar *tzid;
+ gboolean is_date;
+
+ g_return_val_if_fail (E_IS_CAL_MODEL (model), NULL);
+ g_return_val_if_fail (E_IS_CAL_MODEL_COMPONENT (comp_data), NULL);
+ g_return_val_if_fail (get_time_func != NULL, NULL);
+
+ prop = i_cal_component_get_first_property (comp_data->icalcomp, kind);
+ if (!prop)
+ return NULL;
+
+ tt = get_time_func (prop);
+
+ if (!tt || !i_cal_time_is_valid_time (tt) || i_cal_time_is_null_time (tt)) {
+ g_clear_object (&prop);
+ g_clear_object (&tt);
+
+ return NULL;
+ }
+
+ is_date = i_cal_time_is_date (tt);
+
+ if (!is_date) {
+ param = i_cal_property_get_first_parameter (prop, I_CAL_TZID_PARAMETER);
+ tzid = param ? i_cal_parameter_get_tzid (param) : NULL;
+
+ if (!tzid || !*tzid ||
+ !e_cal_client_get_timezone_sync (comp_data->client, tzid, &zone, NULL, NULL))
+ zone = NULL;
+ }
+
+ if (e_cal_data_model_get_expand_recurrences (model->priv->data_model)) {
+ gboolean is_date = i_cal_time_is_date (tt);
+ time_t instance_tt = (time_t) 0;
+
+ if (kind == I_CAL_DTSTART_PROPERTY)
+ instance_tt = comp_data->instance_start;
+ else if (kind == I_CAL_DTEND_PROPERTY)
+ instance_tt = comp_data->instance_end;
+ else
+ g_warn_if_reached ();
+
+ if (zone) {
+ g_clear_object (&tt);
+ tt = i_cal_time_new_from_timet_with_zone (instance_tt, is_date, zone);
+ } else if (model->priv->zone) {
+ g_clear_object (&tt);
+ tt = i_cal_time_new_from_timet_with_zone (instance_tt, is_date, model->priv->zone);
+ }
+
+ if (kind == I_CAL_DTEND_PROPERTY && is_date) {
+ ICalProperty *dtstart;
+
+ dtstart = i_cal_component_get_first_property (comp_data->icalcomp,
I_CAL_DTSTART_PROPERTY);
+
+ if (dtstart) {
+ ICalTime *tt_start;
+ ICalTimezone *start_zone = NULL;
+
+ tt_start = i_cal_property_get_dtstart (dtstart);
+
+ g_clear_object (¶m);
+
+ if (!i_cal_time_is_date (tt_start)) {
+ param = i_cal_property_get_first_parameter (dtstart,
I_CAL_TZID_PARAMETER);
+ tzid = param ? i_cal_parameter_get_tzid (param) : NULL;
+
+ if (!tzid || !*tzid ||
+ !e_cal_client_get_timezone_sync (comp_data->client, tzid,
&start_zone, NULL, NULL))
+ start_zone = NULL;
+ }
+
+ if (start_zone) {
+ tt_start = i_cal_time_new_from_timet_with_zone
(comp_data->instance_start, is_date, start_zone);
+ } else {
+ tt_start = i_cal_time_new_from_timet_with_zone
(comp_data->instance_start, is_date, model->priv->zone);
+ }
+
+ i_cal_time_adjust (tt_start, 1, 0, 0, 0);
+
+ /* Decrease by a day only if the DTSTART will still be before, or the same
as, DTEND */
+ if (i_cal_time_compare (tt_start, tt) <= 0)
+ i_cal_time_adjust (tt, -1, 0, 0, 0);
+
+ g_clear_object (&tt_start);
+ g_clear_object (&dtstart);
+ g_clear_object (¶m);
+ }
+ }
+ }
+
+ value = e_cell_date_edit_value_new_take (tt, zone ? e_cal_util_copy_timezone (zone) : NULL);
+
+ g_clear_object (&prop);
+ g_clear_object (¶m);
+
+ return value;
+}
diff --git a/src/calendar/gui/e-cal-model.h b/src/calendar/gui/e-cal-model.h
index 69f2f66554..0b7d90d900 100644
--- a/src/calendar/gui/e-cal-model.h
+++ b/src/calendar/gui/e-cal-model.h
@@ -413,6 +413,12 @@ gint e_cal_model_util_status_compare_cb
(gconstpointer a,
gconstpointer b,
gpointer cmp_cache);
+ECellDateEditValue *
+ e_cal_model_util_get_datetime_value
+ (ECalModel *model,
+ ECalModelComponent *comp_data,
+ ICalPropertyKind kind,
+ ICalTime * (*get_time_func) (ICalProperty *prop));
G_END_DECLS
diff --git a/src/calendar/gui/e-calendar-view.c b/src/calendar/gui/e-calendar-view.c
index 470ea78176..f3c933a3f6 100644
--- a/src/calendar/gui/e-calendar-view.c
+++ b/src/calendar/gui/e-calendar-view.c
@@ -1948,14 +1948,27 @@ e_calendar_view_get_tooltips (const ECalendarViewEventData *data)
zone = default_zone;
} else {
- zone = NULL;
+ zone = default_zone;
}
if (dtstart && e_cal_component_datetime_get_value (dtstart)) {
t_start = i_cal_time_as_timet_with_zone (e_cal_component_datetime_get_value (dtstart), zone);
- if (dtend && e_cal_component_datetime_get_value (dtend))
- t_end = i_cal_time_as_timet_with_zone (e_cal_component_datetime_get_value (dtend),
zone);
- else
+
+ if (dtend && e_cal_component_datetime_get_value (dtend)) {
+ ICalTimezone *end_zone = default_zone;
+
+ if (e_cal_component_datetime_get_tzid (dtend)) {
+ end_zone = i_cal_component_get_timezone (e_cal_component_get_icalcomponent
(newcomp), e_cal_component_datetime_get_tzid (dtend));
+ if (!end_zone &&
+ !e_cal_client_get_timezone_sync (client,
e_cal_component_datetime_get_tzid (dtend), &end_zone, NULL, NULL))
+ end_zone = NULL;
+
+ if (!end_zone)
+ end_zone = default_zone;
+ }
+
+ t_end = i_cal_time_as_timet_with_zone (e_cal_component_datetime_get_value (dtend),
end_zone);
+ } else
t_end = t_start;
tmp1 = get_label (e_cal_component_datetime_get_value (dtstart), zone, default_zone);
diff --git a/src/calendar/gui/e-comp-editor-event.c b/src/calendar/gui/e-comp-editor-event.c
index 49dececa3d..b7943bb3a5 100644
--- a/src/calendar/gui/e-comp-editor-event.c
+++ b/src/calendar/gui/e-comp-editor-event.c
@@ -281,6 +281,7 @@ ece_event_update_timezone (ECompEditorEvent *event_editor,
ICalComponent *component;
ICalProperty *prop;
ICalTimezone *zone = NULL;
+ gboolean has_property = FALSE;
g_return_if_fail (E_IS_COMP_EDITOR_EVENT (event_editor));
@@ -298,6 +299,8 @@ ece_event_update_timezone (ECompEditorEvent *event_editor,
}
if (e_cal_util_component_has_property (component, I_CAL_DTSTART_PROPERTY)) {
+ has_property = TRUE;
+
dtstart = i_cal_component_get_dtstart (component);
if (dtstart && i_cal_time_is_valid_time (dtstart)) {
if (i_cal_time_is_utc (dtstart)) {
@@ -311,6 +314,8 @@ ece_event_update_timezone (ECompEditorEvent *event_editor,
}
if (e_cal_util_component_has_property (component, I_CAL_DTEND_PROPERTY)) {
+ has_property = TRUE;
+
dtend = i_cal_component_get_dtend (component);
if (!zone && i_cal_time_is_valid_time (dtend)) {
if (i_cal_time_is_utc (dtend)) {
@@ -323,9 +328,11 @@ ece_event_update_timezone (ECompEditorEvent *event_editor,
}
}
- if (!zone) {
+ if (!zone && e_cal_util_component_has_property (component, I_CAL_DUE_PROPERTY)) {
ICalTime *itt;
+ has_property = TRUE;
+
itt = i_cal_component_get_due (component);
if (itt && i_cal_time_is_valid_time (itt)) {
if (i_cal_time_is_utc (itt)) {
@@ -340,7 +347,7 @@ ece_event_update_timezone (ECompEditorEvent *event_editor,
g_clear_object (&itt);
}
- if (zone) {
+ if (has_property) {
GtkWidget *edit_widget;
ICalTimezone *cfg_zone;
diff --git a/src/calendar/gui/e-comp-editor-property-parts.c b/src/calendar/gui/e-comp-editor-property-parts.c
index a6c1d6507a..53e106859f 100644
--- a/src/calendar/gui/e-comp-editor-property-parts.c
+++ b/src/calendar/gui/e-comp-editor-property-parts.c
@@ -1451,41 +1451,7 @@ static void
ecepp_timezone_fill_widget (ECompEditorPropertyPart *property_part,
ICalComponent *component)
{
- ICalTime * (* get_func) (ICalProperty *prop);
- ICalProperty *prop;
-
- g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_TIMEZONE (property_part));
-
- get_func = i_cal_property_get_dtstart;
- prop = i_cal_component_get_first_property (component, I_CAL_DTSTART_PROPERTY);
-
- if (!prop) {
- get_func = i_cal_property_get_dtend;
- prop = i_cal_component_get_first_property (component, I_CAL_DTEND_PROPERTY);
- }
-
- if (!prop) {
- get_func = i_cal_property_get_due;
- prop = i_cal_component_get_first_property (component, I_CAL_DUE_PROPERTY);
- }
-
- if (prop) {
- ICalTime *itt;
- GtkWidget *edit_widget;
-
- edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
- g_return_if_fail (E_IS_TIMEZONE_ENTRY (edit_widget));
-
- itt = get_func (prop);
- if (itt && i_cal_time_get_timezone (itt)) {
- e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (edit_widget),
i_cal_time_get_timezone (itt));
- } else {
- e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (edit_widget), NULL);
- }
-
- g_clear_object (&itt);
- g_object_unref (prop);
- }
+ /* Nothing to do here, this is sort-of virtual property part */
}
static void
diff --git a/src/calendar/gui/e-comp-editor-task.c b/src/calendar/gui/e-comp-editor-task.c
index 574c9bbb50..4280ae6c8b 100644
--- a/src/calendar/gui/e-comp-editor-task.c
+++ b/src/calendar/gui/e-comp-editor-task.c
@@ -99,18 +99,41 @@ ece_task_get_timezone_from_property (ECompEditor *comp_editor,
return zone;
}
+static ICalTime *
+ece_task_get_completed (ICalComponent *comp)
+{
+ ICalProperty *prop;
+ ICalTime *tt;
+
+ g_return_val_if_fail (I_CAL_IS_COMPONENT (comp), NULL);
+
+ prop = i_cal_component_get_first_property (comp, I_CAL_COMPLETED_PROPERTY);
+ if (!prop)
+ return NULL;
+
+ tt = i_cal_property_get_completed (prop);
+
+ g_object_unref (prop);
+
+ return tt;
+}
+
static void
ece_task_update_timezone (ECompEditorTask *task_editor,
gboolean *force_allday)
{
- const gint properties[] = {
- I_CAL_DTSTART_PROPERTY,
- I_CAL_DUE_PROPERTY,
- I_CAL_COMPLETED_PROPERTY
+ struct _props_data {
+ ICalPropertyKind kind;
+ ICalTime * (*get_func) (ICalComponent *comp);
+ } properties[] = {
+ { I_CAL_DTSTART_PROPERTY, i_cal_component_get_dtstart },
+ { I_CAL_DUE_PROPERTY, i_cal_component_get_due },
+ { I_CAL_COMPLETED_PROPERTY, ece_task_get_completed }
};
ECompEditor *comp_editor;
ICalComponent *component;
ICalTimezone *zone = NULL;
+ gboolean has_property = FALSE;
gint ii;
g_return_if_fail (E_IS_COMP_EDITOR_TASK (task_editor));
@@ -124,11 +147,13 @@ ece_task_update_timezone (ECompEditorTask *task_editor,
if (!component)
return;
- for (ii = 0; !zone && ii < G_N_ELEMENTS (properties); ii++) {
- if (e_cal_util_component_has_property (component, properties[ii])) {
+ for (ii = 0; !has_property && ii < G_N_ELEMENTS (properties); ii++) {
+ if (e_cal_util_component_has_property (component, properties[ii].kind)) {
ICalTime *dt;
- dt = i_cal_component_get_dtstart (component);
+ has_property = TRUE;
+
+ dt = properties[ii].get_func (component);
if (dt && i_cal_time_is_valid_time (dt)) {
if (force_allday && i_cal_time_is_date (dt))
*force_allday = TRUE;
@@ -138,7 +163,7 @@ ece_task_update_timezone (ECompEditorTask *task_editor,
} else {
ICalProperty *prop;
- prop = i_cal_component_get_first_property (component, properties[ii]);
+ prop = i_cal_component_get_first_property (component,
properties[ii].kind);
zone = ece_task_get_timezone_from_property (comp_editor, prop);
g_clear_object (&prop);
}
@@ -148,7 +173,7 @@ ece_task_update_timezone (ECompEditorTask *task_editor,
}
}
- if (zone) {
+ if (has_property) {
GtkWidget *edit_widget;
ICalTimezone *cfg_zone;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]