More changes to PopupMenu's submenu keyboard handling.

This commit is contained in:
Michael Alexsander Silva Dias 2017-12-16 20:54:44 -02:00
parent 1e2a8132f3
commit 7e38db631f

View file

@ -211,11 +211,6 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
mouse_over = i; mouse_over = i;
update(); update();
if (items[i].submenu != "" && submenu_over != i) {
submenu_over = i;
submenu_timer->start();
}
break; break;
} }
} }
@ -231,20 +226,40 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
mouse_over = i; mouse_over = i;
update(); update();
if (items[i].submenu != "" && submenu_over != i) {
submenu_over = i;
submenu_timer->start();
}
break; break;
} }
} }
} break; } break;
case KEY_LEFT: {
Node *n = get_parent();
if (!n)
break;
PopupMenu *pm = Object::cast_to<PopupMenu>(n);
if (!pm)
break;
hide();
} break;
case KEY_RIGHT: {
if (mouse_over >= 0 && mouse_over < items.size() && !items[mouse_over].separator && items[mouse_over].submenu != "" && submenu_over != mouse_over)
_activate_submenu(mouse_over);
} break;
case KEY_ENTER: case KEY_ENTER:
case KEY_KP_ENTER: { case KEY_KP_ENTER: {
if (mouse_over >= 0 && mouse_over < items.size() && !items[mouse_over].separator) { if (mouse_over >= 0 && mouse_over < items.size() && !items[mouse_over].separator) {
if (items[mouse_over].submenu != "" && submenu_over != mouse_over) {
_activate_submenu(mouse_over);
break;
}
activate_item(mouse_over); activate_item(mouse_over);
} }
} break; } break;