summaryrefslogtreecommitdiffstats
path: root/scene/gui/popup_menu.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-17 10:58:46 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-17 10:58:46 +0200
commitfad6897af08e4be8db2880db1d6a73205feed35e (patch)
tree60bbe58b4bccc99c75bb055b56ec8093b05d5c8f /scene/gui/popup_menu.cpp
parent544ecc123a0f3b6a223addb24a5498a2d0bac920 (diff)
parent978ffb39bfd9bfb501367f9cb041e45e9d3a22e3 (diff)
downloadredot-engine-fad6897af08e4be8db2880db1d6a73205feed35e.tar.gz
Merge pull request #90639 from YeldhamDev/stay_open_please
Fix submenus erroneously closing on some occasions
Diffstat (limited to 'scene/gui/popup_menu.cpp')
-rw-r--r--scene/gui/popup_menu.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 56346f5edc..b6dd3ac0b4 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -640,11 +640,17 @@ void PopupMenu::_input_from_window_internal(const Ref<InputEvent> &p_event) {
for (const Rect2 &E : autohide_areas) {
if (!Rect2(Point2(), get_size()).has_point(m->get_position()) && E.has_point(m->get_position())) {
+ // The mouse left the safe area, prepare to close.
_close_pressed();
return;
}
}
+ if (!minimum_lifetime_timer->is_stopped()) {
+ // The mouse left the safe area, but came back again, so cancel the auto-closing.
+ minimum_lifetime_timer->stop();
+ }
+
if (!item_clickable_area.has_point(m->get_position())) {
return;
}