aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/TreeRenderObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/TreeRenderObject.cpp')
-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();
}