mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-15 23:00:08 +00:00
fix a touchscreen-mode keynav corner case: when navigating to the parent
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. svn path=/trunk/; revision=19981
This commit is contained in:
parent
e6ffa4f5de
commit
4cfa620fcc
@ -1,3 +1,10 @@
|
||||
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.
|
||||
|
||||
2008-04-06 Tristan Van Berkom <tvb@gnome.org>
|
||||
|
||||
* gtk/gtkwidget.c: Clarified a g_warning message regarding
|
||||
|
@ -1298,23 +1298,35 @@ gtk_real_menu_shell_move_current (GtkMenuShell *menu_shell,
|
||||
{
|
||||
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. */
|
||||
|
Loading…
Reference in New Issue
Block a user