]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
FIx for the issue 1077: the added attributes must produce not-empty transaction
authormpv <mpv@opencascade.com>
Wed, 11 Nov 2015 12:36:24 +0000 (15:36 +0300)
committermpv <mpv@opencascade.com>
Wed, 11 Nov 2015 12:36:24 +0000 (15:36 +0300)
src/Model/Model_Document.cpp

index e3ff4e04ceb7cd9620df60e053ab2961afd53218..c6e15c7ef3965458559967b83cde2af2ee99f288 100755 (executable)
@@ -438,14 +438,17 @@ static bool isEmptyTransaction(const Handle(TDocStd_Document)& theDoc) {
   const TDF_AttributeDeltaList& anAttrs = aDelta->AttributeDeltas();
   for (TDF_ListIteratorOfAttributeDeltaList anAttr(anAttrs); anAttr.More(); anAttr.Next()) {
     Handle(TDF_AttributeDelta)& anADelta = anAttr.Value();
-    if (!anADelta->Label().IsNull() && !anADelta->Attribute().IsNull()) {
-      Handle(TDF_Attribute) aCurrentAttr;
-      if (anADelta->Label().FindAttribute(anADelta->Attribute()->ID(), aCurrentAttr)) {
-        if (isEqualContent(anADelta->Attribute(), aCurrentAttr)) {
-          continue; // attribute is not changed actually
+    Handle(TDF_DeltaOnAddition)& anAddition = Handle(TDF_DeltaOnAddition)::DownCast(anADelta);
+    if (anAddition.IsNull()) { // if the attribute was added, transaction is not empty
+      if (!anADelta->Label().IsNull() && !anADelta->Attribute().IsNull()) {
+        Handle(TDF_Attribute) aCurrentAttr;
+        if (anADelta->Label().FindAttribute(anADelta->Attribute()->ID(), aCurrentAttr)) {
+          if (isEqualContent(anADelta->Attribute(), aCurrentAttr)) {
+            continue; // attribute is not changed actually
+          }
+        } else if (Standard_GUID::IsEqual(anADelta->Attribute()->ID(), TDataStd_AsciiString::GetID())) {
+          continue; // error message is disappeared
         }
-      } else if (Standard_GUID::IsEqual(anADelta->Attribute()->ID(), TDataStd_AsciiString::GetID())) {
-        continue; // error message is disappeared
       }
     }
     return false;