event-editor/dialog: Improve detection of MOD_ALL exclusion cases
This commit is contained in:
@@ -331,7 +331,7 @@ on_done_button_clicked_cb (GtkButton *button,
|
|||||||
GcalCalendar *selected_calendar;
|
GcalCalendar *selected_calendar;
|
||||||
GcalCalendar *calendar;
|
GcalCalendar *calendar;
|
||||||
GcalManager *manager;
|
GcalManager *manager;
|
||||||
gboolean schedule_changed;
|
gboolean can_show_mod_all;
|
||||||
gboolean was_recurrent;
|
gboolean was_recurrent;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
@@ -341,7 +341,7 @@ on_done_button_clicked_cb (GtkButton *button,
|
|||||||
if (gcal_calendar_is_read_only (calendar))
|
if (gcal_calendar_is_read_only (calendar))
|
||||||
GCAL_GOTO (out);
|
GCAL_GOTO (out);
|
||||||
|
|
||||||
schedule_changed = FALSE;
|
can_show_mod_all = TRUE;
|
||||||
if (!self->event_is_new)
|
if (!self->event_is_new)
|
||||||
{
|
{
|
||||||
gboolean anything_changed = FALSE;
|
gboolean anything_changed = FALSE;
|
||||||
@@ -352,18 +352,14 @@ on_done_button_clicked_cb (GtkButton *button,
|
|||||||
|
|
||||||
section_changed = gcal_event_editor_section_changed (self->sections[i]);
|
section_changed = gcal_event_editor_section_changed (self->sections[i]);
|
||||||
anything_changed |= section_changed;
|
anything_changed |= section_changed;
|
||||||
|
|
||||||
if (self->sections[i] == self->schedule_section)
|
|
||||||
schedule_changed = section_changed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GCAL_TRACE_MSG ("Event %s changed: %d, schedule changed: %d",
|
|
||||||
gcal_event_get_uid (self->event),
|
|
||||||
anything_changed,
|
|
||||||
schedule_changed);
|
|
||||||
|
|
||||||
if (!anything_changed)
|
if (!anything_changed)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
can_show_mod_all =
|
||||||
|
!gcal_schedule_section_recurrence_changed (GCAL_SCHEDULE_SECTION (self->schedule_section)) &&
|
||||||
|
!gcal_schedule_section_day_changed (GCAL_SCHEDULE_SECTION (self->schedule_section));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -399,7 +395,7 @@ on_done_button_clicked_cb (GtkButton *button,
|
|||||||
{
|
{
|
||||||
gcal_utils_ask_recurrence_modification_type (GTK_WIDGET (self),
|
gcal_utils_ask_recurrence_modification_type (GTK_WIDGET (self),
|
||||||
self->event,
|
self->event,
|
||||||
!schedule_changed,
|
can_show_mod_all,
|
||||||
on_ask_recurrence_response_save_cb,
|
on_ask_recurrence_response_save_cb,
|
||||||
self);
|
self);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -827,3 +827,20 @@ gcal_schedule_section_recurrence_changed (GcalScheduleSection *self)
|
|||||||
|
|
||||||
GCAL_RETURN (!gcal_recurrence_is_equal (recurrence, gcal_event_get_recurrence (self->event)));
|
GCAL_RETURN (!gcal_recurrence_is_equal (recurrence, gcal_event_get_recurrence (self->event)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gcal_schedule_section_day_changed (GcalScheduleSection *self)
|
||||||
|
{
|
||||||
|
g_autoptr (GDateTime) start_date = NULL;
|
||||||
|
g_autoptr (GDateTime) end_date = NULL;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GCAL_IS_SCHEDULE_SECTION (self), FALSE);
|
||||||
|
|
||||||
|
GCAL_ENTRY;
|
||||||
|
|
||||||
|
start_date = get_date_start (self);
|
||||||
|
end_date = get_date_end (self);
|
||||||
|
|
||||||
|
GCAL_RETURN (gcal_date_time_compare_date (start_date, gcal_event_get_date_start (self->event)) < 0 ||
|
||||||
|
gcal_date_time_compare_date (end_date, gcal_event_get_date_end (self->event)) > 0);
|
||||||
|
}
|
||||||
|
|||||||
@@ -29,4 +29,6 @@ G_DECLARE_FINAL_TYPE (GcalScheduleSection, gcal_schedule_section, GCAL, SCHEDULE
|
|||||||
|
|
||||||
gboolean gcal_schedule_section_recurrence_changed (GcalScheduleSection *self);
|
gboolean gcal_schedule_section_recurrence_changed (GcalScheduleSection *self);
|
||||||
|
|
||||||
|
gboolean gcal_schedule_section_day_changed (GcalScheduleSection *self);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
Reference in New Issue
Block a user