[gtk: 2/3] checkbutton: Activate when moving focus




commit 1728aa581c19dc70e05aae59bf9b82ac87ed7c74
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Jul 30 20:18:36 2021 +0200

    checkbutton: Activate when moving focus
    
    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 | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkcheckbutton.c b/gtk/gtkcheckbutton.c
index 9471f6d3c6..4357a10010 100644
--- a/gtk/gtkcheckbutton.c
+++ b/gtk/gtkcheckbutton.c
@@ -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;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]