aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-10 22:06:50 +0800
committercrupest <crupest@outlook.com>2022-02-10 22:06:50 +0800
commitf65d0502a9f0fc44be0dd79a5f3f31697bb3aad0 (patch)
treec24a3a25284c94d52af5264dda996bfdd311857b /src/ui/render
parenta236a2a146bfcc4eb5c93a85cd99ac330e83a7f5 (diff)
downloadcru-f65d0502a9f0fc44be0dd79a5f3f31697bb3aad0.tar.gz
cru-f65d0502a9f0fc44be0dd79a5f3f31697bb3aad0.tar.bz2
cru-f65d0502a9f0fc44be0dd79a5f3f31697bb3aad0.zip
...
Diffstat (limited to 'src/ui/render')
-rw-r--r--src/ui/render/TreeRenderObject.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/ui/render/TreeRenderObject.cpp b/src/ui/render/TreeRenderObject.cpp
index 9bf74535..8bf662e4 100644
--- a/src/ui/render/TreeRenderObject.cpp
+++ b/src/ui/render/TreeRenderObject.cpp
@@ -9,6 +9,11 @@ TreeRenderObjectItem::TreeRenderObjectItem(TreeRenderObject* tree_render_object,
: tree_render_object_(tree_render_object), parent_(parent) {}
TreeRenderObjectItem::~TreeRenderObjectItem() {
+ if (render_object_) {
+ render_object_->SetParent(nullptr);
+ render_object_ = nullptr;
+ }
+
for (auto child : children_) {
delete child;
}
@@ -16,7 +21,14 @@ TreeRenderObjectItem::~TreeRenderObjectItem() {
void TreeRenderObjectItem::SetRenderObject(RenderObject* render_object) {
if (render_object == render_object_) return;
+ if (render_object_) {
+ render_object_->SetParent(nullptr);
+ }
render_object_ = render_object;
+ if (render_object) {
+ assert(render_object->GetParent() == nullptr);
+ render_object->SetParent(tree_render_object_);
+ }
tree_render_object_->InvalidateLayout();
}