]> Pileus Git - ~andy/gtk/commitdiff
pop up the submenu explicitely only in touchscreen mode since otherwise
authorMichael Natterer <mitch@imendio.com>
Mon, 30 Apr 2007 13:00:07 +0000 (13:00 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Mon, 30 Apr 2007 13:00:07 +0000 (13:00 +0000)
2007-04-30  Michael Natterer  <mitch@imendio.com>

* gtk/gtkmenushell.c (gtk_menu_shell_enter_notify): pop up the
submenu explicitely only in touchscreen mode since otherwise
selecting the item already pops up the submenu. Restores the
drag-selection timeout (spotted by Søren Sandmann, #128968).

svn path=/trunk/; revision=17735

ChangeLog
gtk/gtkmenushell.c

index 18086d749c40f2993b02b4c13ab5e5feaca0c31d..9815b121c2520081436cdf4f2ada8a0bfb82f185 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-04-30  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkmenushell.c (gtk_menu_shell_enter_notify): pop up the
+       submenu explicitely only in touchscreen mode since otherwise
+       selecting the item already pops up the submenu. Restores the
+       drag-selection timeout (spotted by Søren Sandmann, #128968).
+
 2007-04-30  Michael Natterer  <mitch@imendio.com>
 
        * gtk/gtkpapersize.h: really rename gtk_paper_size_get_builtins()
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);
+                    }
                 }
            }
        }