From fa7a5773d464c48c43a6c1306822824169c2a03b Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 21 Mar 2023 13:47:24 +0100 Subject: [PATCH] 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. --- gtk/gtklistbase.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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; } -- 2.30.2