From c49fc433de21f40f10adcddf14da9c228159c2f8 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 12 Dec 2011 18:21:40 +0100 Subject: [PATCH] menus: Select the first item for touch devices This was done through gtk-touchscreen-mode. Now it is handled dynamically on the current event source device. --- gtk/gtkmenu.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index f1571d972b..1da001e1e5 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -1480,7 +1480,7 @@ gtk_menu_popup_for_device (GtkMenu *menu, GtkMenuShell *menu_shell; gboolean grab_keyboard; GtkWidget *parent_toplevel; - GdkDevice *keyboard, *pointer; + GdkDevice *keyboard, *pointer, *source_device = NULL; g_return_if_fail (GTK_IS_MENU (menu)); g_return_if_fail (device == NULL || GDK_IS_DEVICE (device)); @@ -1617,6 +1617,7 @@ gtk_menu_popup_for_device (GtkMenu *menu, (current_event->type != GDK_ENTER_NOTIFY)) menu_shell->priv->ignore_enter = TRUE; + source_device = gdk_event_get_source_device (current_event); gdk_event_free (current_event); } else @@ -1686,17 +1687,9 @@ gtk_menu_popup_for_device (GtkMenu *menu, gtk_menu_scroll_to (menu, priv->scroll_offset); /* if no item is selected, select the first one */ - if (!menu_shell->priv->active_menu_item) - { - gboolean touchscreen_mode; - - g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu)), - "gtk-touchscreen-mode", &touchscreen_mode, - NULL); - - if (touchscreen_mode) - gtk_menu_shell_select_first (menu_shell, TRUE); - } + if (!menu_shell->priv->active_menu_item && + source_device && gdk_device_get_source (source_device) == GDK_SOURCE_TOUCHSCREEN) + gtk_menu_shell_select_first (menu_shell, TRUE); /* Once everything is set up correctly, map the toplevel */ gtk_widget_show (priv->toplevel);