gtk+ r19981 - in trunk: . gtk
- From: mitch svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r19981 - in trunk: . gtk
- Date: Tue, 8 Apr 2008 12:03:11 +0100 (BST)
Author: mitch
Date: Tue Apr 8 12:03:10 2008
New Revision: 19981
URL: http://svn.gnome.org/viewvc/gtk+?rev=19981&view=rev
Log:
2008-04-08 Michael Natterer <mitch imendio com>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): fix a
touchscreen-mode keynav corner case: when navigating to the parent
menu, make sure we don't close two menus at the same time in case
the deepest open menu has no selectable items.
Modified:
trunk/ChangeLog
trunk/gtk/gtkmenushell.c
Modified: trunk/gtk/gtkmenushell.c
==============================================================================
--- trunk/gtk/gtkmenushell.c (original)
+++ trunk/gtk/gtkmenushell.c Tue Apr 8 12:03:10 2008
@@ -1298,23 +1298,35 @@
{
GtkMenuShell *parent_menu_shell = NULL;
gboolean had_selection;
+ gboolean touchscreen_mode;
had_selection = menu_shell->active_menu_item != NULL;
+ g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_shell)),
+ "gtk-touchscreen-mode", &touchscreen_mode,
+ NULL);
+
if (menu_shell->parent_menu_shell)
parent_menu_shell = GTK_MENU_SHELL (menu_shell->parent_menu_shell);
switch (direction)
{
case GTK_MENU_DIR_PARENT:
- if (parent_menu_shell)
+ if (touchscreen_mode &&
+ menu_shell->active_menu_item &&
+ GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu &&
+ GTK_WIDGET_VISIBLE (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu))
+ {
+ /* if we are on a menu item that has an open submenu but the
+ * focus is not in that submenu (e.g. because it's empty or
+ * has only insensitive items), close that submenu instead
+ * of running into the code below which would close *this*
+ * menu.
+ */
+ _gtk_menu_item_popdown_submenu (menu_shell->active_menu_item);
+ }
+ else if (parent_menu_shell)
{
- gboolean touchscreen_mode;
-
- g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_shell)),
- "gtk-touchscreen-mode", &touchscreen_mode,
- NULL);
-
if (touchscreen_mode)
{
/* close menu when returning from submenu. */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]