]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Do not show concealed results
authormpv <mikhail.ponikarov@opencascade.com>
Fri, 19 Sep 2014 14:09:32 +0000 (18:09 +0400)
committermpv <mikhail.ponikarov@opencascade.com>
Fri, 19 Sep 2014 14:09:32 +0000 (18:09 +0400)
src/Model/Model_Document.h
src/ModelAPI/ModelAPI_Document.h
src/XGUI/XGUI_Workshop.cpp

index 443d00c1036626f95e0fb2cf1437ac6b8ff84bab..38625983c593ff4787c6120136c249d4ae7eeb71 100644 (file)
@@ -129,6 +129,12 @@ class Model_Document : public ModelAPI_Document
   ///! On abort, undo or redo it is not necessary: results in document are updated automatically
   bool executeFeatures() {return myExecuteFeatures;}
 
+  ///! Reutrns true is result was conecaled because of usage it by other object
+  virtual bool isConcealed(const boost::shared_ptr<ModelAPI_Object>& theResult) {
+    return myConcealedResults.find(boost::dynamic_pointer_cast<ModelAPI_Result>(theResult))
+      != myConcealedResults.end();
+  }
+
  protected:
 
   //! Returns (creates if needed) the features label
index 7f224da3e37622a4692823248e35945d27308e81..6e432ae020b935d6c8227fbd8064db4b75c23500 100644 (file)
@@ -80,7 +80,10 @@ public:
   virtual boost::shared_ptr<ModelAPI_Feature> feature(
       const boost::shared_ptr<ModelAPI_Result>& theResult) = 0;
 
- protected:
+  ///! Reutrns true is result was conecaled because of usage it by other object
+  virtual bool isConcealed(const boost::shared_ptr<ModelAPI_Object>& theResult) = 0;
+
+protected:
   /// Only for SWIG wrapping it is here
   MODELAPI_EXPORT ModelAPI_Document()
   {
index b5fb72d02de51e651e78dea7d21689137250715a..8d3568d7a9b8ce3025ce697ab79e3e97ea4ecc94 100644 (file)
@@ -385,7 +385,7 @@ void XGUI_Workshop::onFeatureRedisplayMsg(const boost::shared_ptr<ModelAPI_Objec
   std::set<ObjectPtr>::const_iterator aIt;
   for (aIt = aObjects.begin(); aIt != aObjects.end(); ++aIt) {
     ObjectPtr aObj = (*aIt);
-    if (!aObj->data() || !aObj->data()->isValid())
+    if (!aObj->data() || !aObj->data()->isValid() || aObj->document()->isConcealed(aObj))
       myDisplayer->erase(aObj, false);
     else {
       if (myDisplayer->isVisible(aObj))  // TODO VSV: Correction sketch drawing
@@ -419,7 +419,8 @@ void XGUI_Workshop::onFeatureCreatedMsg(const boost::shared_ptr<ModelAPI_ObjectU
       // it doesn't stored in the operation mgr and doesn't displayed
     } else if (myOperationMgr->hasOperation()) {
       ModuleBase_Operation* aOperation = myOperationMgr->currentOperation();
-      if (aOperation->hasObject(*aIt)) {  // Display only current operation results
+      if (!(*aIt)->document()->isConcealed(*aIt) &&
+          aOperation->hasObject(*aIt)) {  // Display only current operation results
         myDisplayer->display(*aIt, false);
         isDisplayed = true;
       }