extends SplitContainer ############# # overrides # ############# func add_child(child : Node, legible_unique_name := false) -> void: .add_child(child, legible_unique_name) child.connect("tree_exited", self, "_on_child_tree_exited") ################# # private stuff # ################# func __try_collapse() -> void: var count := get_child_count() if count == 0: # nothing left? I can go now self.queue_free() return elif count > 1: # more than one? I have to stay return # exactly one? replace me with them var child := get_child(0) remove_child(child) get_parent().add_child_below_node(self, child) GDBUIUtility.copy_size(child, self) self.queue_free() ################### # signal handlers # ################### func _on_child_tree_exited() -> void: if !get_tree(): return yield(get_tree(), "idle_frame") # wait until child is actually gone __try_collapse()