[gtk+/multitouch: 59/129] gtk, menu: Select the first item for touch devices
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/multitouch: 59/129] gtk, menu: Select the first item for touch devices
- Date: Sat, 18 Feb 2012 17:11:17 +0000 (UTC)
commit 8c4b0b66b8ec7c4ae2c7f62909bca59030d2ff11
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 05adf08..bf15464 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1472,7 +1472,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));
@@ -1609,6 +1609,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
@@ -1678,17 +1679,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]