diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2011-12-11 18:46:50 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-03-01 16:25:22 -0500 |
commit | 5139617b91004c0aaa69da0ffa56dfc832bddacb (patch) | |
tree | 5ebc4c3b0fa8bfca395155942c284bc29b3c3d3e /gtk/gtkmenuitem.c | |
parent | 51189ae260699f63862a3136a552ad369d4e336a (diff) | |
download | gtk+-5139617b91004c0aaa69da0ffa56dfc832bddacb.tar.gz |
menus: Handle item selection for touch devices dynamically
Instead of using gtk-touchscreen-mode, the behavior changes depending
on the source device in use.
Diffstat (limited to 'gtk/gtkmenuitem.c')
-rw-r--r-- | gtk/gtkmenuitem.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index d72b5cea6a..147430bbb6 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -1688,13 +1688,20 @@ static void gtk_real_menu_item_select (GtkMenuItem *menu_item) { GtkMenuItemPrivate *priv = menu_item->priv; - gboolean touchscreen_mode; + GdkDevice *source_device = NULL; + GdkEvent *current_event; - g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_item)), - "gtk-touchscreen-mode", &touchscreen_mode, - NULL); + current_event = gtk_get_current_event (); - if (!touchscreen_mode && priv->submenu && + if (current_event) + { + source_device = gdk_event_get_source_device (current_event); + gdk_event_free (current_event); + } + + if ((!source_device || + gdk_device_get_source (source_device) != GDK_SOURCE_TOUCH) && + priv->submenu && (!gtk_widget_get_mapped (priv->submenu) || GTK_MENU (priv->submenu)->priv->tearoff_active)) { |