diff options
| author | Rémi Verschelde | 2017-12-17 20:22:20 +0100 |
|---|---|---|
| committer | GitHub | 2017-12-17 20:22:20 +0100 |
| commit | 90d95c7ee17b94736045555f1810a2a920fd3b33 (patch) | |
| tree | 0d00854d318ce6b4a8a04dacccac69f5f6bdfa69 /scene/gui/popup_menu.cpp | |
| parent | 4ee57026bb3d370427ac5ba5070504286f12c2ef (diff) | |
| parent | 7e38db631f0d5577457a68c5dbc7c09a308bb18d (diff) | |
| download | godot-90d95c7ee17b94736045555f1810a2a920fd3b33.tar.gz godot-90d95c7ee17b94736045555f1810a2a920fd3b33.tar.zst godot-90d95c7ee17b94736045555f1810a2a920fd3b33.zip | |
Diffstat (limited to 'scene/gui/popup_menu.cpp')
| -rw-r--r-- | scene/gui/popup_menu.cpp | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 698676cc3..62f2b15dd 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -211,11 +211,6 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) { mouse_over = i; update(); - - if (items[i].submenu != "" && submenu_over != i) { - submenu_over = i; - submenu_timer->start(); - } break; } } @@ -231,20 +226,40 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) { mouse_over = i; update(); - - if (items[i].submenu != "" && submenu_over != i) { - submenu_over = i; - submenu_timer->start(); - } 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_KP_ENTER: { 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); } } break; |
