Merge pull request #113164 from kitbdev/fix-spitcontainer-change-type-crash

Fix SplitContainer crash on change type
This commit is contained in:
Rémi Verschelde 2025-11-26 23:44:18 +01:00
commit ca366b51df
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -750,7 +750,7 @@ void SplitContainer::_resort() {
void SplitContainer::_update_draggers() { void SplitContainer::_update_draggers() {
const int valid_child_count = (int)valid_children.size(); 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(); const int draggers_size_diff = dragger_count - (int)dragging_area_controls.size();
// Add new draggers. // Add new draggers.
@ -768,7 +768,10 @@ void SplitContainer::_update_draggers() {
const int remove_at = (int)dragging_area_controls.size() - 1; const int remove_at = (int)dragging_area_controls.size() - 1;
SplitContainerDragger *dragger = dragging_area_controls[remove_at]; SplitContainerDragger *dragger = dragging_area_controls[remove_at];
dragging_area_controls.remove_at(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); memdelete(dragger);
} }