diff --git a/gtk/gtklistbase.c b/gtk/gtklistbase.c index 68682e8a52..7c4757e1a4 100644 --- a/gtk/gtklistbase.c +++ b/gtk/gtklistbase.c @@ -1702,7 +1702,7 @@ gtk_list_base_apply_rubberband_selection (GtkListBase *self, model = gtk_list_item_manager_get_model (priv->item_manager); if (model != NULL) { - GtkBitset *selected, *mask; + GtkBitset *selected, *mask, *result; GdkRectangle rect; GtkBitset *rubberband_selection; @@ -1755,8 +1755,14 @@ gtk_list_base_apply_rubberband_selection (GtkListBase *self, gtk_selection_model_set_selection (model, selected, mask); + result = gtk_selection_model_get_selection (model); + + if (gtk_bitset_get_size (result) == 1) + gtk_list_base_grab_focus_on_item (self, gtk_bitset_get_minimum (result), TRUE, FALSE, FALSE); + gtk_bitset_unref (selected); gtk_bitset_unref (mask); + gtk_bitset_unref (result); gtk_bitset_unref (rubberband_selection); } }