fixes to the TreeModel and Client
[quassel.git] / src / client / treemodel.cpp
index ad0706e..9a01abf 100644 (file)
@@ -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<AbstractTreeItem *>::iterator childIter;
+
+  childIter = _childItems.begin();
+  while(childIter != _childItems.end()) {
+    child = *childIter;
+    child->removeAllChilds();
+    childIter++;
+  }
+
   emit beginRemoveChilds(0, numChilds - 1);
-  QList<AbstractTreeItem *>::iterator childIter = _childItems.begin();
+  childIter = _childItems.begin();
   while(childIter != _childItems.end()) {
     child = *childIter;
     childIter = _childItems.erase(childIter);