From f745299c36cfa0ae936e9d2ae829e8cca91956f0 Mon Sep 17 00:00:00 2001 From: ajreckof <66184050+ajreckof@users.noreply.github.com> Date: Fri, 23 Jun 2023 01:47:05 +0200 Subject: [PATCH] Fix crash when removing child during focus exit. --- scene/main/viewport.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index f9d02a83fa..e15a8e4870 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -2427,10 +2427,12 @@ void Viewport::_gui_control_grab_focus(Control *p_control) { return; } get_tree()->call_group("_viewports", "_gui_remove_focus_for_window", (Node *)get_base_window()); - gui.key_focus = p_control; - emit_signal(SNAME("gui_focus_changed"), p_control); - p_control->notification(Control::NOTIFICATION_FOCUS_ENTER); - p_control->queue_redraw(); + if (p_control->is_inside_tree() && p_control->get_viewport() == this) { + gui.key_focus = p_control; + emit_signal(SNAME("gui_focus_changed"), p_control); + p_control->notification(Control::NOTIFICATION_FOCUS_ENTER); + p_control->queue_redraw(); + } } void Viewport::_gui_accept_event() {