From 3de5bc29c64258eb732f318a6a3d8c8f3f08744e Mon Sep 17 00:00:00 2001 From: mpv Date: Wed, 11 Nov 2015 15:36:24 +0300 Subject: [PATCH] FIx for the issue 1077: the added attributes must produce not-empty transaction --- src/Model/Model_Document.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) 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; -- 2.39.2