Salome HOME
#2027 Sketcher Trim Feature: 1. preview/selected attributes in trim; 2. avoid includi...
[modules/shaper.git] / src / Model / Model_Data.cpp
index 750b9103b7de3de0bbb1dcbd0c40e50b79b913b8..cbe96e2b3c043caf58214590311b078b170ec851 100644 (file)
@@ -94,8 +94,12 @@ void Model_Data::setLabel(TDF_Label theLab)
 std::string Model_Data::name()
 {
   Handle(TDataStd_Name) aName;
-  if (myLab.FindAttribute(TDataStd_Name::GetID(), aName))
+  if (myLab.FindAttribute(TDataStd_Name::GetID(), aName)) {
+#ifdef DEBUG_NAMES
+    myObject->myName = TCollection_AsciiString(aName->Get()).ToCString();
+#endif
     return std::string(TCollection_AsciiString(aName->Get()).ToCString());
+  }
   return "";  // not defined
 }
 
@@ -118,6 +122,9 @@ void Model_Data::setName(const std::string& theName)
     std::dynamic_pointer_cast<Model_Document>(myObject->document())->
       changeNamingName(anOldName, theName);
   }
+#ifdef DEBUG_NAMES
+  myObject->myName = theName;
+#endif
 }
 
 AttributePtr Model_Data::addAttribute(const std::string& theID, const std::string theAttrType)
@@ -295,11 +302,18 @@ void Model_Data::sendAttributeUpdated(ModelAPI_Attribute* theAttr)
       if (myWasChangedButBlocked.empty() || *(myWasChangedButBlocked.rbegin()) != theAttr)
         myWasChangedButBlocked.push_back(theAttr);
     }
+  } else {
+    // trim: need to redisplay
+    if (myObject) {
+      static const Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
+      ModelAPI_EventCreator::get()->sendUpdated(myObject, anEvent);
+    }
   }
 }
 
-void Model_Data::blockSendAttributeUpdated(const bool theBlock, const bool theSendMessage)
+bool Model_Data::blockSendAttributeUpdated(const bool theBlock, const bool theSendMessage)
 {
+  bool aWasBlocked = !mySendAttributeUpdated;
   if (mySendAttributeUpdated == theBlock) {
     mySendAttributeUpdated = !theBlock;
     if (mySendAttributeUpdated && !myWasChangedButBlocked.empty()) {
@@ -320,6 +334,7 @@ void Model_Data::blockSendAttributeUpdated(const bool theBlock, const bool theSe
       }
     }
   }
+  return aWasBlocked;
 }
 
 void Model_Data::erase()