]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkmenushell.c
pop up the submenu explicitely only in touchscreen mode since otherwise
[~andy/gtk] / gtk / gtkmenushell.c
index 6d9ab949959606a04dda749327f04b83d2ace110..65ddc1211b9b1328d6b4668600d42e1ba9ce6fa7 100644 (file)
@@ -810,17 +810,25 @@ gtk_menu_shell_enter_notify (GtkWidget        *widget,
                * entering a menu item where we wouldn't want to show
                * its submenu.
                */
-              if ((event->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON2_MASK)) &&
-                  GTK_MENU_ITEM (menu_item)->submenu != NULL &&
-                  !GTK_WIDGET_VISIBLE (GTK_MENU_ITEM (menu_item)->submenu))
+              if ((event->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) &&
+                  GTK_MENU_ITEM (menu_item)->submenu != NULL)
                 {
                   GtkMenuShellPrivate *priv;
 
                   priv = GTK_MENU_SHELL_GET_PRIVATE (menu_item->parent);
+                  priv->activated_submenu = TRUE;
 
-                  _gtk_menu_item_popup_submenu (menu_item, TRUE);
+                  if (!GTK_WIDGET_VISIBLE (GTK_MENU_ITEM (menu_item)->submenu))
+                    {
+                      gboolean touchscreen_mode;
 
-                  priv->activated_submenu = TRUE;
+                      g_object_get (gtk_widget_get_settings (widget),
+                                    "gtk-touchscreen-mode", &touchscreen_mode,
+                                    NULL);
+
+                      if (touchscreen_mode)
+                        _gtk_menu_item_popup_submenu (menu_item, TRUE);
+                    }
                 }
            }
        }