summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Alexsander Silva Dias <michaelalexsander@protonmail.com>2017-12-16 13:54:43 -0200
committerMichael Alexsander Silva Dias <michaelalexsander@protonmail.com>2017-12-16 13:54:43 -0200
commitc19cc581ec1e6fc30c3df48f7683a96436c1db06 (patch)
treee99376a16a211d55909d638677c411368d50cb33
parent1b9c8daf7bb981f93e23a0a9acd5fbb9b90730fc (diff)
Made highlighted item in PopupMenu circle back to the beginning/end when using the keyboard.
-rw-r--r--scene/gui/popup_menu.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 698676cc39..72ddea72a1 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -202,7 +202,11 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
case KEY_DOWN: {
- for (int i = mouse_over + 1; i < items.size(); i++) {
+ int search_from = mouse_over + 1;
+ if (search_from >= items.size())
+ search_from = 0;
+
+ for (int i = search_from; i < items.size(); i++) {
if (i < 0 || i >= items.size())
continue;
@@ -222,7 +226,11 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
} break;
case KEY_UP: {
- for (int i = mouse_over - 1; i >= 0; i--) {
+ int search_from = mouse_over - 1;
+ if (search_from < 0)
+ search_from = items.size() - 1;
+
+ for (int i = search_from; i >= 0; i--) {
if (i < 0 || i >= items.size())
continue;