From: Benjamin Otte Date: Tue, 21 Mar 2023 12:47:24 +0000 (+0100) Subject: listbase: Only grab_focus() if the cursor moved X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~514^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=fa7a5773d464c48c43a6c1306822824169c2a03b;p=gtk4.git listbase: Only grab_focus() if the cursor moved If there is no movement, grab_focus() on the already focused widget just causes weird inconsistencies and we don't want those. --- diff --git a/gtk/gtklistbase.c b/gtk/gtklistbase.c index a5d85aabb7..4f0d575777 100644 --- a/gtk/gtklistbase.c +++ b/gtk/gtklistbase.c @@ -1091,15 +1091,16 @@ gtk_list_base_move_cursor (GtkWidget *widget, GtkListBase *self = GTK_LIST_BASE (widget); int amount; guint orientation; - guint pos; + guint old_pos, new_pos; gboolean select, modify, extend; g_variant_get (args, "(ubbbi)", &orientation, &select, &modify, &extend, &amount); - pos = gtk_list_base_get_focus_position (self); - pos = gtk_list_base_move_focus (self, pos, orientation, amount); + old_pos = gtk_list_base_get_focus_position (self); + new_pos = gtk_list_base_move_focus (self, old_pos, orientation, amount); - gtk_list_base_grab_focus_on_item (GTK_LIST_BASE (self), pos, select, modify, extend); + if (old_pos != new_pos) + gtk_list_base_grab_focus_on_item (GTK_LIST_BASE (self), new_pos, select, modify, extend); return TRUE; }