diff options
Diffstat (limited to 'src/ui/render')
-rw-r--r-- | src/ui/render/TreeRenderObject.cpp | 12 |
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(); } |