Salome HOME
Issue #2594: sort children if after deletion children have a wrong order.
[modules/shaper.git] / src / ModuleBase / ModuleBase_ITreeNode.h
index 362dad470aa556b62e244e224f015ad2f3c54176..fcd6c7bd46b2560519cb26c0a7ad81a60820c990 100644 (file)
@@ -177,6 +177,27 @@ protected:
     }
   }
 
+  void sortChildren() {
+    int i = 0;
+    ModuleBase_ITreeNode* aNode = 0;
+    ObjectPtr aObject;
+    int aIdx;
+    while (i < myChildren.size()) {
+      aNode = myChildren.at(i);
+      aObject = aNode->object();
+      if (aObject.get()) {
+        aIdx = aObject->document()->index(aObject, true);
+        if (aIdx != i) {
+          myChildren.removeAll(aNode);
+          myChildren.insert(aIdx, aNode);
+          i = 0;
+          continue;
+        }
+      }
+      i++;
+    }
+  }
+
   ModuleBase_ITreeNode* myParent; //!< Parent of the node
   QTreeNodesList myChildren; //!< Children of the node
 };