summaryrefslogtreecommitdiff
path: root/scene/gui/popup_menu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui/popup_menu.cpp')
-rw-r--r--scene/gui/popup_menu.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 62f2b15ddd..7999f50013 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -5,8 +5,8 @@
/* GODOT ENGINE */
/* https://godotengine.org */
/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
@@ -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;
@@ -217,7 +221,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;