X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Ftreemodel.cpp;fp=src%2Fclient%2Ftreemodel.cpp;h=960f7e841f9fc4032268cbb0784dab8f7c9b680a;hb=c7a5ea8c0e5807fd0079bcb10cb88e4356526bad;hp=ad0706e188dec45c40dd8d5cfe3f481cd9fd48b7;hpb=eb903042cd48f1e1907a963f7d2baf93b54b2476;p=quassel.git diff --git a/src/client/treemodel.cpp b/src/client/treemodel.cpp index ad0706e1..960f7e84 100644 --- a/src/client/treemodel.cpp +++ b/src/client/treemodel.cpp @@ -55,6 +55,7 @@ bool AbstractTreeItem::removeChild(int row) { if(childCount() <= row) return false; + child(row)->removeAllChilds(); emit beginRemoveChilds(row, row); AbstractTreeItem *treeitem = _childItems.takeAt(row); treeitem->deleteLater(); @@ -82,8 +83,13 @@ void AbstractTreeItem::removeAllChilds() { AbstractTreeItem *child; - emit beginRemoveChilds(0, numChilds - 1); QList::iterator childIter = _childItems.begin(); + while(childIter != _childItems.end()) { + child = *childIter; + child->removeAllChilds(); + } + + emit beginRemoveChilds(0, numChilds - 1); while(childIter != _childItems.end()) { child = *childIter; childIter = _childItems.erase(childIter);