diff --git a/src/gui/event-editor/gcal-multi-choice.blp b/src/gui/event-editor/gcal-multi-choice.blp index 11c9043c..a6b60253 100644 --- a/src/gui/event-editor/gcal-multi-choice.blp +++ b/src/gui/event-editor/gcal-multi-choice.blp @@ -26,7 +26,7 @@ template $GcalMultiChoice: Widget { ToggleButton button { accessible-role: none; toggled => $button_toggled_cb() swapped; - state-flags-changed => $button_state_flags_changed_cb() swapped; + state-flags-changed => $gcal_multi_choice_state_flags_changed(template); styles [ "flat", diff --git a/src/gui/event-editor/gcal-multi-choice.c b/src/gui/event-editor/gcal-multi-choice.c index 2d538932..8b681302 100644 --- a/src/gui/event-editor/gcal-multi-choice.c +++ b/src/gui/event-editor/gcal-multi-choice.c @@ -252,19 +252,6 @@ menu_deactivate_cb (GcalMultiChoice *self) return TRUE; } -static void -button_state_flags_changed_cb (GcalMultiChoice *self, - GtkStateFlags previous_state_flags) -{ - GtkStateFlags state_flags; - - g_assert (GCAL_IS_MULTI_CHOICE (self)); - - state_flags = gtk_widget_get_state_flags (self->button); - - gtk_widget_set_state_flags (GTK_WIDGET (self), state_flags, TRUE); -} - /* * GObject overrides */ @@ -393,13 +380,18 @@ static void gcal_multi_choice_state_flags_changed (GtkWidget *widget, GtkStateFlags previous_state_flags) { - GcalMultiChoice *self = GCAL_MULTI_CHOICE (widget); - GtkStateFlags state_flags; + GcalMultiChoice *self; + GtkStateFlags button_state_flags; GtkWidget *popover; - state_flags = gtk_widget_get_state_flags (widget); - if (state_flags & GTK_STATE_FLAG_FOCUSED) - gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_FOCUS_VISIBLE, FALSE); + g_assert (GCAL_IS_MULTI_CHOICE (widget)); + + self = GCAL_MULTI_CHOICE (widget); + + button_state_flags = gtk_widget_get_state_flags (self->button); + if (button_state_flags & GTK_STATE_FLAG_FOCUSED) + button_state_flags |= GTK_STATE_FLAG_FOCUS_VISIBLE; + gtk_widget_set_state_flags (GTK_WIDGET (self), button_state_flags, TRUE); if (!gtk_widget_is_sensitive (widget)) { @@ -541,8 +533,8 @@ gcal_multi_choice_class_init (GcalMultiChoiceClass *class) gtk_widget_class_bind_template_child (widget_class, GcalMultiChoice, label2); gtk_widget_class_bind_template_child (widget_class, GcalMultiChoice, popover_bin); + gtk_widget_class_bind_template_callback (widget_class, gcal_multi_choice_state_flags_changed); gtk_widget_class_bind_template_callback (widget_class, button_toggled_cb); - gtk_widget_class_bind_template_callback (widget_class, button_state_flags_changed_cb); gtk_widget_class_set_css_name (widget_class, "navigator");