[gtk+/touchscreens: 59/69] gtk, menu: Select the first item for touch devices



commit c4b7848aeb842534c94e561f248dd23c0acadcd2
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Dec 12 18:21:40 2011 +0100

    gtk,menu: Select the first item for touch devices
    
    This was done through gtk-touchscreen-mode, now is handled
    dynamically on the current event source device.

 gtk/gtkmenu.c |   17 +++++------------
 1 files changed, 5 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 7b07917..7b21cea 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1469,7 +1469,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));
@@ -1606,6 +1606,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
@@ -1675,17 +1676,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_TOUCH)
+    gtk_menu_shell_select_first (menu_shell, TRUE);
 
   /* Once everything is set up correctly, map the toplevel */
   gtk_widget_show (priv->toplevel);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]