|
@@ -3092,6 +3092,24 @@ bool Viewport::_sub_windows_forward_input(const Ref<InputEvent> &p_event) {
|
|
|
}
|
|
|
|
|
|
if (!gui.subwindow_focused) {
|
|
|
+ // No window focus, check for unfocusable windows under the cursor.
|
|
|
+ Ref<InputEventMouse> me = p_event;
|
|
|
+ if (me.is_valid()) {
|
|
|
+ for (int i = gui.sub_windows.size() - 1; i >= 0; i--) {
|
|
|
+ const SubWindow &sw = gui.sub_windows[i];
|
|
|
+ if (!sw.window->get_flag(Window::FLAG_NO_FOCUS) || sw.window->get_flag(Window::FLAG_MOUSE_PASSTHROUGH)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Rect2i r = Rect2i(sw.window->get_position(), sw.window->get_size());
|
|
|
+ if (r.has_point(me->get_position())) {
|
|
|
+ Transform2D window_ofs;
|
|
|
+ window_ofs.set_origin(-sw.window->get_position());
|
|
|
+ Ref<InputEvent> ev = p_event->xformed_by(window_ofs);
|
|
|
+ sw.window->_window_input(ev);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
|