diff --git a/app/widgets/gimpcontainertreeview.c b/app/widgets/gimpcontainertreeview.c index 1d93865fe1..015da1f78f 100644 --- a/app/widgets/gimpcontainertreeview.c +++ b/app/widgets/gimpcontainertreeview.c @@ -1268,9 +1268,6 @@ gimp_container_tree_view_button (GtkWidget *widget, tree_view->priv->dnd_renderer = NULL; - if (bevent->type != GDK_BUTTON_RELEASE && ! gtk_widget_has_focus (widget)) - gtk_widget_grab_focus (widget); - if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), bevent->x, bevent->y, &path, &column, NULL, NULL)) @@ -1285,6 +1282,13 @@ gimp_container_tree_view_button (GtkWidget *widget, gboolean multisel_mode; GdkModifierType modifiers = (bevent->state & gimp_get_all_modifiers_mask ()); + /* Confirm the path is set before grabbing focus, as it can cause + * the list to auto-scroll to the top on first click otherwise + */ + gtk_tree_view_set_cursor (GTK_TREE_VIEW (widget), path, NULL, FALSE); + if (bevent->type != GDK_BUTTON_RELEASE && ! gtk_widget_has_focus (widget)) + gtk_widget_grab_focus (widget); + multisel_mode = (gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE);