aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/SingleChildRenderObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/SingleChildRenderObject.cpp')
-rw-r--r--src/ui/render/SingleChildRenderObject.cpp22
1 files changed, 22 insertions, 0 deletions
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