X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeIntArray.cpp;h=d6602bba7ade5d9c5900eaa945753209c49a21c3;hb=3ce3e69a217055142b03d67add35d054979a6340;hp=e0548b700803b887270668badb0e9a9f767d3659;hpb=7074394f8f08413d885f63be01df6bd5007b868c;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeIntArray.cpp b/src/Model/Model_AttributeIntArray.cpp index e0548b700..d6602bba7 100644 --- a/src/Model/Model_AttributeIntArray.cpp +++ b/src/Model/Model_AttributeIntArray.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2020 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include @@ -40,40 +39,46 @@ int Model_AttributeIntArray::size() myIsInitialized = myLab.FindAttribute(TDataStd_IntegerArray::GetID(), myArray) == Standard_True; } // checking the validity because attribute (as a field) may be presented, - // but without label: it is undoed + // but without label: it is undone return (myArray.IsNull() || !myArray->IsValid()) ? 0 : myArray->Length(); } -void Model_AttributeIntArray::setSize(const int theSize) +void Model_AttributeIntArray::setSize(const int theSize, bool sendUpdated) { if (myArray.IsNull() || !myArray->IsValid()) { // create array if it is not done yet if (theSize != 0) { // if size is zero, nothing to do (null array means there is no array) myArray = TDataStd_IntegerArray::Set(myLab, 0, theSize - 1); - owner()->data()->sendAttributeUpdated(this); + if (sendUpdated) + owner()->data()->sendAttributeUpdated(this); } } else { // reset the old array if (theSize) { - if (theSize != myArray->Length()) { // old data is not keept, a new array is created + if (theSize != myArray->Length()) { // old data is not kept, a new array is created Handle(TColStd_HArray1OfInteger) aNewArray = new TColStd_HArray1OfInteger(0, theSize - 1); myArray->ChangeArray(aNewArray); - owner()->data()->sendAttributeUpdated(this); + if (sendUpdated) + owner()->data()->sendAttributeUpdated(this); } } else { // size is zero => array must be erased if (!myArray.IsNull()) { myArray.Nullify(); myLab.ForgetAttribute(TDataStd_IntegerArray::GetID()); - owner()->data()->sendAttributeUpdated(this); + if (sendUpdated) + owner()->data()->sendAttributeUpdated(this); } } } } void Model_AttributeIntArray::setValue(const int theIndex, - const int theValue) + const int theValue, + bool sendUpdated) { - if (myArray->Value(theIndex) != theValue) { + if (!isInitialized() || myArray->Value(theIndex) != theValue) { + setInitialized(); myArray->SetValue(theIndex, theValue); - owner()->data()->sendAttributeUpdated(this); + if (sendUpdated) + owner()->data()->sendAttributeUpdated(this); } }