listitemwidget: Activate on release instead of press

Single click activation should only be done on release and not on press,
otherwise it breaks touch scrolling. Double-click activation still can be
done on press.

This matches the GtkListBox behavior as well.

Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/3345
This commit is contained in:
Alexander Mikhaylenko 2020-12-28 19:41:30 +05:00
parent e6f0103940
commit 5968b10b0b

View File

@ -332,7 +332,7 @@ gtk_list_item_widget_click_gesture_pressed (GtkGestureClick *gesture,
if (!priv->list_item || priv->list_item->activatable)
{
if (n_press == 2 || priv->single_click_activate)
if (n_press == 2 && !priv->single_click_activate)
{
gtk_widget_activate_action (GTK_WIDGET (self),
"list.activate-item",
@ -356,6 +356,16 @@ gtk_list_item_widget_click_gesture_released (GtkGestureClick *gesture,
{
GtkListItemWidgetPrivate *priv = gtk_list_item_widget_get_instance_private (self);
if (priv->single_click_activate)
{
gtk_widget_activate_action (GTK_WIDGET (self),
"list.activate-item",
"u",
priv->position);
return;
}
if (!priv->list_item || priv->list_item->selectable)
{
GdkModifierType state;