summaryrefslogtreecommitdiffstats
path: root/scene/gui/popup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui/popup.cpp')
-rw-r--r--scene/gui/popup.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp
index 87383283fd..97b33c4f74 100644
--- a/scene/gui/popup.cpp
+++ b/scene/gui/popup.cpp
@@ -77,6 +77,9 @@ void Popup::_notification(int p_what) {
_initialize_visible_parents();
} else {
_deinitialize_visible_parents();
+ if (hide_reason == HIDE_REASON_NONE) {
+ hide_reason = HIDE_REASON_CANCELED;
+ }
emit_signal(SNAME("popup_hide"));
popped_up = false;
}
@@ -87,6 +90,7 @@ void Popup::_notification(int p_what) {
if (!is_in_edited_scene_root()) {
if (has_focus()) {
popped_up = true;
+ hide_reason = HIDE_REASON_NONE;
}
}
} break;
@@ -100,6 +104,7 @@ void Popup::_notification(int p_what) {
case NOTIFICATION_WM_CLOSE_REQUEST: {
if (!is_in_edited_scene_root()) {
+ hide_reason = HIDE_REASON_UNFOCUSED;
_close_pressed();
}
} break;
@@ -114,6 +119,7 @@ void Popup::_notification(int p_what) {
void Popup::_parent_focused() {
if (popped_up && get_flag(FLAG_POPUP)) {
+ hide_reason = HIDE_REASON_UNFOCUSED;
_close_pressed();
}
}