Fix native popups auto-closing when interacting with non-client area.

This commit is contained in:
bruvzg 2023-07-14 09:16:06 +03:00
parent 16a93563bf
commit e26a6c36c8
3 changed files with 3 additions and 3 deletions

View File

@ -3957,7 +3957,7 @@ bool DisplayServerX11::mouse_process_popups() {
// Find top popup to close. // Find top popup to close.
while (E) { while (E) {
// Popup window area. // Popup window area.
Rect2i win_rect = Rect2i(window_get_position(E->get()), window_get_size(E->get())); Rect2i win_rect = Rect2i(window_get_position_with_decorations(E->get()), window_get_size_with_decorations(E->get()));
// Area of the parent window, which responsible for opening sub-menu. // Area of the parent window, which responsible for opening sub-menu.
Rect2i safe_rect = window_get_popup_safe_rect(E->get()); Rect2i safe_rect = window_get_popup_safe_rect(E->get());
if (win_rect.has_point(pos)) { if (win_rect.has_point(pos)) {

View File

@ -4026,7 +4026,7 @@ bool DisplayServerMacOS::mouse_process_popups(bool p_close) {
// Find top popup to close. // Find top popup to close.
while (E) { while (E) {
// Popup window area. // Popup window area.
Rect2i win_rect = Rect2i(window_get_position(E->get()), window_get_size(E->get())); Rect2i win_rect = Rect2i(window_get_position_with_decorations(E->get()), window_get_size_with_decorations(E->get()));
// Area of the parent window, which responsible for opening sub-menu. // Area of the parent window, which responsible for opening sub-menu.
Rect2i safe_rect = window_get_popup_safe_rect(E->get()); Rect2i safe_rect = window_get_popup_safe_rect(E->get());
if (win_rect.has_point(pos)) { if (win_rect.has_point(pos)) {

View File

@ -2735,7 +2735,7 @@ LRESULT DisplayServerWindows::MouseProc(int code, WPARAM wParam, LPARAM lParam)
// Find top popup to close. // Find top popup to close.
while (E) { while (E) {
// Popup window area. // Popup window area.
Rect2i win_rect = Rect2i(window_get_position(E->get()), window_get_size(E->get())); Rect2i win_rect = Rect2i(window_get_position_with_decorations(E->get()), window_get_size_with_decorations(E->get()));
// Area of the parent window, which responsible for opening sub-menu. // Area of the parent window, which responsible for opening sub-menu.
Rect2i safe_rect = window_get_popup_safe_rect(E->get()); Rect2i safe_rect = window_get_popup_safe_rect(E->get());
if (win_rect.has_point(pos)) { if (win_rect.has_point(pos)) {