]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #1855: Open a folder (Constructions or Result) on first created object
authorvsv <vitaly.smetannikov@opencascade.com>
Mon, 14 Nov 2016 13:19:00 +0000 (16:19 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Mon, 14 Nov 2016 13:19:00 +0000 (16:19 +0300)
src/PartSet/PartSet_Module.cpp
src/XGUI/XGUI_DataModel.cpp
src/XGUI/XGUI_DataModel.h

index bda26290a2da2ab3484260512f6236a4ab5f31c5..921205e7317f9e032403272fbb910bb8f6489487 100755 (executable)
@@ -1236,7 +1236,6 @@ void PartSet_Module::processEvent(const std::shared_ptr<Events_Message>& theMess
     QObjectPtrList aObjects = aDisplayer->displayedObjects();
     bool aHidden;
     foreach(ObjectPtr aObj, aObjects) {
-      //TODO: replace by redisplay event.
       aHidden = !aObj->data() || !aObj->data()->isValid() ||
         aObj->isDisabled() || (!aObj->isDisplayed());
       if (!aHidden)
@@ -1251,12 +1250,14 @@ void PartSet_Module::processEvent(const std::shared_ptr<Events_Message>& theMess
     ObjectPtr aConstrObj;
     ObjectPtr aResultObj;
     std::set<ObjectPtr>::const_iterator aIt;
-    std::string aObjType;
+    DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
     for (aIt = aObjects.begin(); aIt != aObjects.end(); ++aIt) {
       ObjectPtr aObject = (*aIt);
-      if ((!aResultObj.get()) && aObject->groupName() == ModelAPI_ResultBody::group())
+      if ((!aResultObj.get()) && (aObject->groupName() == ModelAPI_ResultBody::group())
+          && (aObject->document() != aRootDoc))
         aResultObj = aObject;
-      if ((!aConstrObj.get()) && aObject->groupName() == ModelAPI_ResultConstruction::group())
+      if ((!aConstrObj.get()) && (aObject->groupName() == ModelAPI_ResultConstruction::group())
+          && (aObject->document() != aRootDoc))
         aConstrObj = aObject;
       if (aResultObj.get() && aConstrObj.get())
         break;
index 8d05f330f8e5fd08e0a725ff6169aa0ef005167f..6e0acaba861953ee90774dc14432552a6d4eccec 100644 (file)
@@ -677,7 +677,7 @@ QModelIndex XGUI_DataModel::parent(const QModelIndex& theIndex) const
         return findDocumentRootIndex(aSubDoc.get());
       else {
         // return first level of folder index
-        int aFolderId = myXMLReader->subFolderId(aType);
+        int aFolderId = folderId(aType, aSubDoc.get());
         // Items in a one row must have the same parent
         return createIndex(aFolderId, 0, aSubDoc.get());
       }
@@ -920,7 +920,7 @@ QModelIndex XGUI_DataModel::lastHistoryIndex() const
 }
 
 //******************************************************
-int XGUI_DataModel::folderId(std::string theType, ModelAPI_Document* theDoc)
+int XGUI_DataModel::folderId(std::string theType, ModelAPI_Document* theDoc) const
 {
   SessionPtr aSession = ModelAPI_Session::get();
   ModelAPI_Document* aDoc = theDoc;
index ed5652d041f24350b8d1df3c1e106f1264aaf351..a57f85c20e3b666936b07f97388cb17daeff7105 100644 (file)
@@ -147,7 +147,7 @@ private:
   /// folders which can not be shown non empty
   /// \param theType Type of the folder
   /// \param theDoc a document which contains this folder
-  int folderId(std::string theType, ModelAPI_Document* theDoc = 0);
+  int folderId(std::string theType, ModelAPI_Document* theDoc = 0) const;
 
   /// Removes a row from branch of tree
   /// \param theStart - start row to update indexes