From: mpv Date: Wed, 11 Nov 2015 12:36:24 +0000 (+0300) Subject: FIx for the issue 1077: the added attributes must produce not-empty transaction X-Git-Tag: V_2.0.0_alfa2~32 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=3de5bc29c64258eb732f318a6a3d8c8f3f08744e;p=modules%2Fshaper.git FIx for the issue 1077: the added attributes must produce not-empty transaction --- diff --git a/src/Model/Model_Document.cpp b/src/Model/Model_Document.cpp index e3ff4e04c..c6e15c7ef 100755 --- a/src/Model/Model_Document.cpp +++ b/src/Model/Model_Document.cpp @@ -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;