X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Ftreemodel.cpp;h=9a01abf455c57446112474184a35a44f2240b676;hp=ad0706e188dec45c40dd8d5cfe3f481cd9fd48b7;hb=f953257711e147661ce79e4da4c8b84f083e3e95;hpb=d5e69c3c89f674c4b033b5ff3469c547fd09f927 diff --git a/src/client/treemodel.cpp b/src/client/treemodel.cpp index ad0706e1..9a01abf4 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,17 @@ void AbstractTreeItem::removeAllChilds() { AbstractTreeItem *child; + QList::iterator childIter; + + childIter = _childItems.begin(); + while(childIter != _childItems.end()) { + child = *childIter; + child->removeAllChilds(); + childIter++; + } + emit beginRemoveChilds(0, numChilds - 1); - QList::iterator childIter = _childItems.begin(); + childIter = _childItems.begin(); while(childIter != _childItems.end()) { child = *childIter; childIter = _childItems.erase(childIter);