Procházet zdrojové kódy

Merge pull request #78591 from ajreckof/Fix-crash-when-removing-child-during-focus-exit-

Fix crash when removing child during focus exit.
Rémi Verschelde před 2 roky
rodič
revize
afe65de110
1 změnil soubory, kde provedl 6 přidání a 4 odebrání
  1. 6 4
      scene/main/viewport.cpp

+ 6 - 4
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() {