aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/SingleChildRenderObject.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-09 23:00:49 +0800
committercrupest <crupest@outlook.com>2022-02-09 23:00:49 +0800
commitd18b5453d7ffd19667ee8ac125b34ab5328f0dc3 (patch)
tree10b969c744dd0ef90a183e4ffacddc818b86534e /src/ui/render/SingleChildRenderObject.cpp
parente18c4fb46d7913f337cc25b9a6e3a25359c3f10a (diff)
downloadcru-d18b5453d7ffd19667ee8ac125b34ab5328f0dc3.tar.gz
cru-d18b5453d7ffd19667ee8ac125b34ab5328f0dc3.tar.bz2
cru-d18b5453d7ffd19667ee8ac125b34ab5328f0dc3.zip
...
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