From d18b5453d7ffd19667ee8ac125b34ab5328f0dc3 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 9 Feb 2022 23:00:49 +0800 Subject: ... --- src/ui/render/SingleChildRenderObject.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/ui/render/SingleChildRenderObject.cpp (limited to 'src/ui/render/SingleChildRenderObject.cpp') diff --git a/src/ui/render/SingleChildRenderObject.cpp b/src/ui/render/SingleChildRenderObject.cpp new file mode 100644 index 00000000..7b10b343 --- /dev/null +++ b/src/ui/render/SingleChildRenderObject.cpp @@ -0,0 +1,22 @@ +#include "cru/ui/render/SingleChildRenderObject.h" + +namespace cru::ui::render { +void SingleChildRenderObject::SetChild(RenderObject *new_child) { + assert(new_child->GetParent() == nullptr); + if (child_ == new_child) return; + auto old_child = child_; + if (child_) { + child_->SetParent(nullptr); + } + child_ = new_child; + if (child_) { + child_->SetParent(this); + } + OnChildChanged(old_child, new_child); +} + +void SingleChildRenderObject::OnChildChanged(RenderObject *old_child, + RenderObject *new_child) { + InvalidateLayout(); +} +} // namespace cru::ui::render -- cgit v1.2.3