diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-05-28 15:50:05 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-05-28 15:50:05 +0200 |
commit | cc6a7b97d6e2425f646d2b9b29a3544010728ae9 (patch) | |
tree | 0f12dc153bf639a41be96eed3f1423aa43811d10 | |
parent | b8f3c5e2abed950590f3e750c63008a00092891f (diff) | |
parent | 1a40cda95e4323b38facba4376944a1eceafd39e (diff) | |
download | redot-engine-cc6a7b97d6e2425f646d2b9b29a3544010728ae9.tar.gz |
Merge pull request #92458 from bruvzg/dup_cl
[macOS, X11] Fix duplicate close requests.
-rw-r--r-- | platform/linuxbsd/x11/display_server_x11.cpp | 5 | ||||
-rw-r--r-- | platform/macos/display_server_macos.mm | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/platform/linuxbsd/x11/display_server_x11.cpp b/platform/linuxbsd/x11/display_server_x11.cpp index 2c07acf94f..feb2f48101 100644 --- a/platform/linuxbsd/x11/display_server_x11.cpp +++ b/platform/linuxbsd/x11/display_server_x11.cpp @@ -4206,7 +4206,10 @@ void DisplayServerX11::popup_close(WindowID p_window) { WindowID win_id = E->get(); popup_list.erase(E); - _send_window_event(windows[win_id], DisplayServerX11::WINDOW_EVENT_CLOSE_REQUEST); + if (win_id != p_window) { + // Only request close on related windows, not this window. We are already processing it. + _send_window_event(windows[win_id], DisplayServerX11::WINDOW_EVENT_CLOSE_REQUEST); + } E = F; } } diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm index db71c48eff..3c94aa0108 100644 --- a/platform/macos/display_server_macos.mm +++ b/platform/macos/display_server_macos.mm @@ -3448,7 +3448,10 @@ void DisplayServerMacOS::popup_close(WindowID p_window) { WindowID win_id = E->get(); popup_list.erase(E); - send_window_event(windows[win_id], DisplayServerMacOS::WINDOW_EVENT_CLOSE_REQUEST); + if (win_id != p_window) { + // Only request close on related windows, not this window. We are already processing it. + send_window_event(windows[win_id], DisplayServerMacOS::WINDOW_EVENT_CLOSE_REQUEST); + } E = F; } if (!was_empty && popup_list.is_empty()) { |