Fix Viewport::handle_input_locally related infinite recursion
This commit is contained in:
parent
22f2b27528
commit
7ecb133b22
1 changed files with 14 additions and 9 deletions
|
@ -2878,9 +2878,8 @@ bool Viewport::gui_is_dragging() const {
|
||||||
|
|
||||||
void Viewport::set_input_as_handled() {
|
void Viewport::set_input_as_handled() {
|
||||||
_drop_physics_mouseover();
|
_drop_physics_mouseover();
|
||||||
if (handle_input_locally) {
|
|
||||||
local_input_handled = true;
|
if (!handle_input_locally) {
|
||||||
} else {
|
|
||||||
ERR_FAIL_COND(!is_inside_tree());
|
ERR_FAIL_COND(!is_inside_tree());
|
||||||
Viewport *vp = this;
|
Viewport *vp = this;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -2892,16 +2891,19 @@ void Viewport::set_input_as_handled() {
|
||||||
}
|
}
|
||||||
vp = vp->get_parent()->get_viewport();
|
vp = vp->get_parent()->get_viewport();
|
||||||
}
|
}
|
||||||
vp->set_input_as_handled();
|
if (vp != this) {
|
||||||
|
vp->set_input_as_handled();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local_input_handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Viewport::is_input_handled() const {
|
bool Viewport::is_input_handled() const {
|
||||||
if (handle_input_locally) {
|
if (!handle_input_locally) {
|
||||||
return local_input_handled;
|
|
||||||
} else {
|
|
||||||
const Viewport *vp = this;
|
|
||||||
ERR_FAIL_COND_V(!is_inside_tree(), false);
|
ERR_FAIL_COND_V(!is_inside_tree(), false);
|
||||||
|
const Viewport *vp = this;
|
||||||
while (true) {
|
while (true) {
|
||||||
if (Object::cast_to<Window>(vp)) {
|
if (Object::cast_to<Window>(vp)) {
|
||||||
break;
|
break;
|
||||||
|
@ -2911,8 +2913,11 @@ bool Viewport::is_input_handled() const {
|
||||||
}
|
}
|
||||||
vp = vp->get_parent()->get_viewport();
|
vp = vp->get_parent()->get_viewport();
|
||||||
}
|
}
|
||||||
return vp->is_input_handled();
|
if (vp != this) {
|
||||||
|
return vp->is_input_handled();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return local_input_handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewport::set_handle_input_locally(bool p_enable) {
|
void Viewport::set_handle_input_locally(bool p_enable) {
|
||||||
|
|
Loading…
Reference in a new issue