Salome HOME
Issue #2986: Update tree after rows insert
authorvsv <vsv@opencascade.com>
Mon, 2 Sep 2019 13:55:47 +0000 (16:55 +0300)
committervsv <vsv@opencascade.com>
Mon, 2 Sep 2019 13:55:47 +0000 (16:55 +0300)
src/XGUI/XGUI_DataModel.cpp

index 1675b41832ef71de13aba205eb44f5fe86edb2ad..d624d14ad7d06ceecef304ebe80dc6fb8225ab72 100644 (file)
@@ -85,7 +85,6 @@ void XGUI_DataModel::processEvent(const std::shared_ptr<Events_Message>& theMess
     QModelIndex aParentIndex1, aParentIndex2;
     ObjectPtr aObj;
     bool aRebuildAll = false;
-    bool isInserted = false;
 
     foreach(ModuleBase_ITreeNode* aNode, aNodes) {
       aObj = aNode->object();
@@ -100,13 +99,10 @@ void XGUI_DataModel::processEvent(const std::shared_ptr<Events_Message>& theMess
         aParentIndex2 = getParentIndex(aNode, 2);
         insertRows(aRow, 1, aParentIndex1);
         dataChanged(aParentIndex1, aParentIndex2);
-        isInserted = true;
       }
     }
     if (aRebuildAll)
       rebuildDataTree();
-    else if (isInserted)
-      endInsertRows();
 
     emit treeRebuilt();
   }
@@ -223,8 +219,6 @@ void XGUI_DataModel::processEvent(const std::shared_ptr<Events_Message>& theMess
     }
     if (aCreated.length() == 0)
       return;
-    bool isInsert = false;
-    bool isRemove = false;
     emit beforeTreeRebuild();
     foreach(ObjectPtr aObj, aCreated) {
       ModuleBase_ITreeNode* aNode = myRoot->subNode(aObj);
@@ -238,22 +232,16 @@ void XGUI_DataModel::processEvent(const std::shared_ptr<Events_Message>& theMess
 
         if (aNewNb > aOldNb) {
           insertRows(aOldNb - 1, aNewNb - aOldNb, aFirstIdx);
-          isInsert = true;
         }
         else if (aNewNb < aOldNb) {
           if (aNewNb)
             removeRows(aNewNb - 1, aOldNb - aNewNb, aFirstIdx);
           else if (aOldNb)
             removeRows(0, aOldNb, aFirstIdx);
-          isRemove = aNewNb || aOldNb;
         }
         dataChanged(aFirstIdx, aLastIdx);
       }
     }
-    if (isRemove)
-      endRemoveRows();
-    if (isInsert)
-      endInsertRows();
     emit treeRebuilt();
   }
 }
@@ -354,6 +342,7 @@ bool XGUI_DataModel::hasChildren(const QModelIndex& theParent) const
 bool XGUI_DataModel::insertRows(int theRow, int theCount, const QModelIndex& theParent)
 {
   beginInsertRows(theParent, theRow, theRow + theCount - 1);
+  endInsertRows();
   return true;
 }
 
@@ -361,6 +350,7 @@ bool XGUI_DataModel::insertRows(int theRow, int theCount, const QModelIndex& the
 bool XGUI_DataModel::removeRows(int theRow, int theCount, const QModelIndex& theParent)
 {
   beginRemoveRows(theParent, theRow, theRow + theCount - 1);
+  endRemoveRows();
   return true;
 }