checkbutton: Activate when moving focus
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 30 Jul 2021 18:18:36 +0000 (20:18 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 30 Jul 2021 18:34:24 +0000 (20:34 +0200)
Currently we update the :active property on both the previous and
new focus button. That "visually activate" the button and will
emit ::toggled, but if the button is associated with an action,
the action state won't change.

Fix that by activating the new focus instead of explicitly fiddling
with the :active property.

gtk/gtkcheckbutton.c

index 9471f6d3c6ced5f9e6d8c4cee2395beb33ae808b..4357a100109509cec71e4ea3fec7d3b4ef7a9015 100644 (file)
@@ -420,9 +420,6 @@ gtk_check_button_focus (GtkWidget         *widget,
                         GtkDirectionType   direction)
 {
   GtkCheckButton *self = GTK_CHECK_BUTTON (widget);
-  GtkCheckButton *active_button;
-
-  active_button = get_group_active_button (self);
 
   if (gtk_widget_is_focus (widget))
     {
@@ -471,9 +468,7 @@ gtk_check_button_focus (GtkWidget         *widget,
       if (new_focus)
         {
           gtk_widget_grab_focus (new_focus);
-          gtk_check_button_set_active (GTK_CHECK_BUTTON (new_focus), TRUE);
-          if (active_button && active_button != (GtkCheckButton *)new_focus)
-            gtk_check_button_set_active (GTK_CHECK_BUTTON (active_button), FALSE);
+          gtk_widget_activate (new_focus);
         }
 
       g_ptr_array_free (child_array, TRUE);
@@ -482,6 +477,9 @@ gtk_check_button_focus (GtkWidget         *widget,
     }
   else
     {
+      GtkCheckButton *active_button;
+
+      active_button = get_group_active_button (self);
       if (active_button && active_button != self)
         return FALSE;