for (aIt = aMsgGroups.cbegin(); aIt != aMsgGroups.cend(); aIt++) {
aList.append(myRoot->objectsDeleted(aIt->first, aIt->second.c_str()));
}
+ // Remove obsolete nodes
+ QTreeNodesList aRemaining;
foreach(ModuleBase_ITreeNode* aNode, aList) {
+ if (myRoot->hasSubNode(aNode))
+ aRemaining.append(aNode);
+ }
+ // Update remaining nodes
+ foreach(ModuleBase_ITreeNode* aNode, aRemaining) {
if (aNode->parent())
aNode->parent()->update();
}
rebuildDataTree();
}
else {
+ QSet<ModuleBase_ITreeNode*> aParents;
foreach(ObjectPtr aObj, aCreated) {
ModuleBase_ITreeNode* aNode = myRoot->subNode(aObj);
if (aNode) {
- int aOldNb = aNode->childrenCount();
- aNode->update();
- int aNewNb = aNode->childrenCount();
-
- QModelIndex aFirstIdx = getIndex(aNode, 0);
- QModelIndex aLastIdx = getIndex(aNode, 2);
-
- if (aNewNb > aOldNb) {
- insertRows(aOldNb - 1, aNewNb - aOldNb, aFirstIdx);
- }
- else if (aNewNb < aOldNb) {
- if (aNewNb)
- removeRows(aNewNb - 1, aOldNb - aNewNb, aFirstIdx);
- else if (aOldNb)
- removeRows(0, aOldNb, aFirstIdx);
+ if (aNode->parent()) {
+ if (aNode->parent() == myRoot) {
+ aParents.clear();
+ aParents.insert(myRoot);
+ break;
+ }
+ else {
+ aNode = aNode->parent();
+ }
}
- dataChanged(aFirstIdx, aLastIdx);
+ aParents.insert(aNode);
}
}
+ foreach(ModuleBase_ITreeNode* aNode, aParents) {
+ aNode->update();
+ }
+ rebuildDataTree();
}
}
else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_ORDER_UPDATED)) {