Set the state of the schedule_type_toggle_group in update_widgets()
And now the redundancy in gcal_schedule_section_set_event() is gone. Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550>
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
253b1d4f17
commit
11dcab5ddf
@@ -65,6 +65,7 @@ struct _GcalScheduleSection
|
|||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
gboolean schedule_type_all_day;
|
||||||
gboolean date_widgets_visible;
|
gboolean date_widgets_visible;
|
||||||
gboolean date_time_widgets_visible;
|
gboolean date_time_widgets_visible;
|
||||||
} WidgetState;
|
} WidgetState;
|
||||||
@@ -101,6 +102,10 @@ static void on_end_date_time_changed_cb (GtkWidget
|
|||||||
GParamSpec *pspec,
|
GParamSpec *pspec,
|
||||||
GcalScheduleSection *self);
|
GcalScheduleSection *self);
|
||||||
|
|
||||||
|
static void on_schedule_type_changed_cb (GtkWidget *widget,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
GcalScheduleSection *self);
|
||||||
|
|
||||||
static GcalScheduleValues *
|
static GcalScheduleValues *
|
||||||
gcal_schedule_values_copy (const GcalScheduleValues *values)
|
gcal_schedule_values_copy (const GcalScheduleValues *values)
|
||||||
{
|
{
|
||||||
@@ -128,6 +133,7 @@ widget_state_from_values (const GcalScheduleValues *values)
|
|||||||
{
|
{
|
||||||
WidgetState *state = g_new0 (WidgetState, 1);
|
WidgetState *state = g_new0 (WidgetState, 1);
|
||||||
|
|
||||||
|
state->schedule_type_all_day = values->all_day;
|
||||||
state->date_widgets_visible = values->all_day;
|
state->date_widgets_visible = values->all_day;
|
||||||
state->date_time_widgets_visible = !values->all_day;
|
state->date_time_widgets_visible = !values->all_day;
|
||||||
|
|
||||||
@@ -188,11 +194,17 @@ static void
|
|||||||
update_widgets (GcalScheduleSection *self,
|
update_widgets (GcalScheduleSection *self,
|
||||||
WidgetState *state)
|
WidgetState *state)
|
||||||
{
|
{
|
||||||
|
g_signal_handlers_block_by_func (self->schedule_type_toggle_group, on_schedule_type_changed_cb, self);
|
||||||
|
|
||||||
|
adw_toggle_group_set_active_name (self->schedule_type_toggle_group,
|
||||||
|
state->schedule_type_all_day ? "all-day" : "time-slot");
|
||||||
|
|
||||||
gtk_widget_set_visible (GTK_WIDGET (self->start_date_group), state->date_widgets_visible);
|
gtk_widget_set_visible (GTK_WIDGET (self->start_date_group), state->date_widgets_visible);
|
||||||
gtk_widget_set_visible (GTK_WIDGET (self->end_date_group), state->date_widgets_visible);
|
gtk_widget_set_visible (GTK_WIDGET (self->end_date_group), state->date_widgets_visible);
|
||||||
gtk_widget_set_visible (GTK_WIDGET (self->start_date_time_chooser), state->date_time_widgets_visible);
|
gtk_widget_set_visible (GTK_WIDGET (self->start_date_time_chooser), state->date_time_widgets_visible);
|
||||||
gtk_widget_set_visible (GTK_WIDGET (self->end_date_time_chooser), state->date_time_widgets_visible);
|
gtk_widget_set_visible (GTK_WIDGET (self->end_date_time_chooser), state->date_time_widgets_visible);
|
||||||
|
|
||||||
|
g_signal_handlers_unblock_by_func (self->schedule_type_toggle_group, on_schedule_type_changed_cb, self);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -429,10 +441,6 @@ gcal_schedule_section_set_event (GcalEventEditorSection *section,
|
|||||||
all_day = values->all_day;
|
all_day = values->all_day;
|
||||||
new_event = flags & GCAL_EVENT_EDITOR_FLAG_NEW_EVENT;
|
new_event = flags & GCAL_EVENT_EDITOR_FLAG_NEW_EVENT;
|
||||||
|
|
||||||
/* schedule type */
|
|
||||||
adw_toggle_group_set_active_name (self->schedule_type_toggle_group,
|
|
||||||
all_day ? "all-day" : "time-slot");
|
|
||||||
|
|
||||||
state = widget_state_from_values (values);
|
state = widget_state_from_values (values);
|
||||||
update_widgets (self, state);
|
update_widgets (self, state);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user