From 101de5b7151e996b026fa3705fc5ec5d065142f3 Mon Sep 17 00:00:00 2001 From: Sergiusz Bazanski Date: Wed, 1 Aug 2018 17:40:27 +0100 Subject: gui: treemodel: unregister from parent when we get destroyed This fixes mysterious crashes when a new context was being loaded. The 'Bels', 'Wires', and 'Nets' roots would get replaced by new ones in TreeModel::Model::loadContext, but they would not get unregistered from their parent. --- gui/treemodel.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gui/treemodel.h b/gui/treemodel.h index 4c3f64c3..c3f9fe88 100644 --- a/gui/treemodel.h +++ b/gui/treemodel.h @@ -62,6 +62,8 @@ class Item void addChild(Item *child) { children_.append(child); } + void deleteChild(Item *child) { children_.removeAll(child); } + public: Item(QString name, Item *parent) : name_(name), parent_(parent) { @@ -100,7 +102,12 @@ class Item virtual bool canFetchMore() const { return false; } virtual void fetchMore() {} - ~Item() {} + ~Item() + { + if (parent_ != nullptr) { + parent_->deleteChild(this); + } + } }; // IdString is an Item that corresponds to a real element in Arch. -- cgit v1.2.3