From e4e00a546106ab7111c09dc8e324beb0c623a3e8 Mon Sep 17 00:00:00 2001 From: kit Date: Tue, 25 Nov 2025 16:10:08 -0500 Subject: [PATCH] Fix SplitContainer crash on change type --- scene/gui/split_container.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp index 42fb547ed11..c327a6b8cb2 100644 --- a/scene/gui/split_container.cpp +++ b/scene/gui/split_container.cpp @@ -750,7 +750,7 @@ void SplitContainer::_resort() { void SplitContainer::_update_draggers() { const int valid_child_count = (int)valid_children.size(); - const int dragger_count = valid_child_count - 1; + const int dragger_count = MAX(valid_child_count - 1, 1); const int draggers_size_diff = dragger_count - (int)dragging_area_controls.size(); // Add new draggers. @@ -768,7 +768,10 @@ void SplitContainer::_update_draggers() { const int remove_at = (int)dragging_area_controls.size() - 1; SplitContainerDragger *dragger = dragging_area_controls[remove_at]; dragging_area_controls.remove_at(remove_at); - remove_child(dragger); + // replace_by removes all children, so make sure it is a child before removing. + if (dragger->get_parent() == this) { + remove_child(dragger); + } memdelete(dragger); }