Skip to content

Commit

Permalink
Merge pull request #92843 from anniryynanen/tooltip-in-popup
Browse files Browse the repository at this point in the history
Stop color picker tooltip from stealing input events
  • Loading branch information
akien-mga committed Jun 10, 2024
2 parents 95b84f1 + ae1e218 commit b80e591
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 3 deletions.
5 changes: 4 additions & 1 deletion platform/linuxbsd/x11/display_server_x11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4184,8 +4184,11 @@ void DisplayServerX11::popup_open(WindowID p_window) {
}
}

// Detect tooltips and other similar popups that shouldn't block input to their parent.
bool ignores_input = window_get_flag(WINDOW_FLAG_NO_FOCUS, p_window) && window_get_flag(WINDOW_FLAG_MOUSE_PASSTHROUGH, p_window);

WindowData &wd = windows[p_window];
if (wd.is_popup || has_popup_ancestor) {
if (wd.is_popup || (has_popup_ancestor && !ignores_input)) {
// Find current popup parent, or root popup if new window is not transient.
List<WindowID>::Element *C = nullptr;
List<WindowID>::Element *E = popup_list.back();
Expand Down
5 changes: 4 additions & 1 deletion platform/macos/display_server_macos.mm
Original file line number Diff line number Diff line change
Expand Up @@ -3366,8 +3366,11 @@
}
}

// Detect tooltips and other similar popups that shouldn't block input to their parent.
bool ignores_input = window_get_flag(WINDOW_FLAG_NO_FOCUS, p_window) && window_get_flag(WINDOW_FLAG_MOUSE_PASSTHROUGH, p_window);

WindowData &wd = windows[p_window];
if (wd.is_popup || has_popup_ancestor) {
if (wd.is_popup || (has_popup_ancestor && !ignores_input)) {
bool was_empty = popup_list.is_empty();
// Find current popup parent, or root popup if new window is not transient.
List<WindowID>::Element *C = nullptr;
Expand Down
5 changes: 4 additions & 1 deletion platform/windows/display_server_windows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3575,8 +3575,11 @@ void DisplayServerWindows::popup_open(WindowID p_window) {
}
}

// Detect tooltips and other similar popups that shouldn't block input to their parent.
bool ignores_input = window_get_flag(WINDOW_FLAG_NO_FOCUS, p_window) && window_get_flag(WINDOW_FLAG_MOUSE_PASSTHROUGH, p_window);

WindowData &wd = windows[p_window];
if (wd.is_popup || has_popup_ancestor) {
if (wd.is_popup || (has_popup_ancestor && !ignores_input)) {
// Find current popup parent, or root popup if new window is not transient.
List<WindowID>::Element *C = nullptr;
List<WindowID>::Element *E = popup_list.back();
Expand Down

0 comments on commit b80e591

Please sign in to comment.