Merge pull request #69318 from Sauermann/fix-refresh-gui-events
Fix scene reload crash related to mouse cursor update
This commit is contained in:
commit
6aac8af6f1
3 changed files with 25 additions and 10 deletions
|
@ -1735,13 +1735,18 @@ real_t Control::get_stretch_ratio() const {
|
|||
// Input events.
|
||||
|
||||
void Control::_call_gui_input(const Ref<InputEvent> &p_event) {
|
||||
emit_signal(SceneStringNames::get_singleton()->gui_input, p_event); //signal should be first, so it's possible to override an event (and then accept it)
|
||||
if (!is_inside_tree() || get_viewport()->is_input_handled()) {
|
||||
return; //input was handled, abort
|
||||
if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
emit_signal(SceneStringNames::get_singleton()->gui_input, p_event); // Signal should be first, so it's possible to override an event (and then accept it).
|
||||
}
|
||||
GDVIRTUAL_CALL(_gui_input, p_event);
|
||||
if (!is_inside_tree() || get_viewport()->is_input_handled()) {
|
||||
return; //input was handled, abort
|
||||
return; // Input was handled, abort.
|
||||
}
|
||||
|
||||
if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
GDVIRTUAL_CALL(_gui_input, p_event);
|
||||
}
|
||||
if (!is_inside_tree() || get_viewport()->is_input_handled()) {
|
||||
return; // Input was handled, abort.
|
||||
}
|
||||
gui_input(p_event);
|
||||
}
|
||||
|
|
|
@ -2791,7 +2791,9 @@ void Node::request_ready() {
|
|||
}
|
||||
|
||||
void Node::_call_input(const Ref<InputEvent> &p_event) {
|
||||
GDVIRTUAL_CALL(_input, p_event);
|
||||
if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
GDVIRTUAL_CALL(_input, p_event);
|
||||
}
|
||||
if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) {
|
||||
return;
|
||||
}
|
||||
|
@ -2799,7 +2801,9 @@ void Node::_call_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
void Node::_call_shortcut_input(const Ref<InputEvent> &p_event) {
|
||||
GDVIRTUAL_CALL(_shortcut_input, p_event);
|
||||
if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
GDVIRTUAL_CALL(_shortcut_input, p_event);
|
||||
}
|
||||
if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) {
|
||||
return;
|
||||
}
|
||||
|
@ -2807,7 +2811,9 @@ void Node::_call_shortcut_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
void Node::_call_unhandled_input(const Ref<InputEvent> &p_event) {
|
||||
GDVIRTUAL_CALL(_unhandled_input, p_event);
|
||||
if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
GDVIRTUAL_CALL(_unhandled_input, p_event);
|
||||
}
|
||||
if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) {
|
||||
return;
|
||||
}
|
||||
|
@ -2815,7 +2821,9 @@ void Node::_call_unhandled_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
void Node::_call_unhandled_key_input(const Ref<InputEvent> &p_event) {
|
||||
GDVIRTUAL_CALL(_unhandled_key_input, p_event);
|
||||
if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
GDVIRTUAL_CALL(_unhandled_key_input, p_event);
|
||||
}
|
||||
if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1377,7 +1377,9 @@ void Window::_window_input(const Ref<InputEvent> &p_ev) {
|
|||
}
|
||||
}
|
||||
|
||||
emit_signal(SceneStringNames::get_singleton()->window_input, p_ev);
|
||||
if (p_ev->get_device() != InputEvent::DEVICE_ID_INTERNAL) {
|
||||
emit_signal(SceneStringNames::get_singleton()->window_input, p_ev);
|
||||
}
|
||||
|
||||
if (is_inside_tree()) {
|
||||
push_input(p_ev);
|
||||
|
|
Loading…
Reference in a new issue