diff options
author | Juan Linietsky <reduzio@gmail.com> | 2018-11-16 13:46:42 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2018-11-16 13:47:21 -0300 |
commit | 3331ececc4c03cc2d112dcf266dc01781540551c (patch) | |
tree | 448cfd71bf7c7f67f29766614b531a6c4b1dec08 /scene/main | |
parent | 0807e4f348299eaf2a8c97d8bc9ba66c0f501ee7 (diff) |
Do not allow controls in ignore mouse to get focus via their children, fixes #17955
Diffstat (limited to 'scene/main')
-rw-r--r-- | scene/main/viewport.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 82645aa17a..86992c38f0 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1510,12 +1510,17 @@ void Viewport::_gui_call_input(Control *p_control, const Ref<InputEvent> &p_inpu Control *control = Object::cast_to<Control>(ci); if (control) { - control->emit_signal(SceneStringNames::get_singleton()->gui_input, ev); //signal should be first, so it's possible to override an event (and then accept it) + if (control->data.mouse_filter != Control::MOUSE_FILTER_IGNORE) { + control->emit_signal(SceneStringNames::get_singleton()->gui_input, ev); //signal should be first, so it's possible to override an event (and then accept it) + } if (gui.key_event_accepted) break; if (!control->is_inside_tree()) break; - control->call_multilevel(SceneStringNames::get_singleton()->_gui_input, ev); + + if (control->data.mouse_filter != Control::MOUSE_FILTER_IGNORE) { + control->call_multilevel(SceneStringNames::get_singleton()->_gui_input, ev); + } if (!control->is_inside_tree() || control->is_set_as_toplevel()) break; |