X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeRefList.cpp;h=313c0bb6bf112116eafba0a7c59225793ffee55d;hb=09365c927ebe8d881de2eda7f96bc33a2d9511c8;hp=e8a17a7345136faa0155c99cc11cb823ef8efee1;hpb=a93d9fa2d5fa8dc056f60820a6801a0652da4847;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeRefList.cpp b/src/Model/Model_AttributeRefList.cpp index e8a17a734..313c0bb6b 100644 --- a/src/Model/Model_AttributeRefList.cpp +++ b/src/Model/Model_AttributeRefList.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2019 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 "Model_AttributeRefList.h" @@ -67,6 +66,7 @@ void Model_AttributeRefList::remove(ObjectPtr theObject) REMOVE_BACK_REF(theObject); owner()->data()->sendAttributeUpdated(this); } else { + // LCOV_EXCL_START // create new lists because for the current moment remove one of the duplicated elements // from the list is buggy TDF_LabelList anOldList = myRef->List(); @@ -102,6 +102,7 @@ void Model_AttributeRefList::remove(ObjectPtr theObject) REMOVE_BACK_REF(theObject); owner()->data()->sendAttributeUpdated(this); } + // LCOV_EXCL_STOP } } else { // in case of empty object remove, the first empty object is removed from the list @@ -251,38 +252,6 @@ void Model_AttributeRefList::substitute(const ObjectPtr& theCurrent, const Objec } } -void Model_AttributeRefList::exchange(const ObjectPtr& theObject1, const ObjectPtr& theObject2) -{ - std::shared_ptr aDoc = std::dynamic_pointer_cast( - owner()->document()); - if (aDoc) { - std::shared_ptr aData1 = std::dynamic_pointer_cast(theObject1->data()); - if (aData1.get() && aData1->isValid()) { - TDF_Label aLab1 = aData1->label().Father(); - if (theObject2.get() && theObject2->data()->isValid()) { // the new may be null - std::shared_ptr aData2 = - std::dynamic_pointer_cast(theObject2->data()); - if (aData2.get() && aData2->isValid()) { - eraseHash(); - TDF_Label aLab2 = aData2->label().Father(); - // do the substitution: use the temporary label, as usually in exchange - TDF_Label aTmpLab = aLab1.Root(); - if (myRef->InsertAfter(aTmpLab, aLab1)) { - myRef->Remove(aLab1); - } - if (myRef->InsertAfter(aLab1, aLab2)) { - myRef->Remove(aLab2); - } - if (myRef->InsertAfter(aLab2, aTmpLab)) { - myRef->Remove(aTmpLab); - } - owner()->data()->sendAttributeUpdated(this); - } - } - } - } -} - void Model_AttributeRefList::removeLast() { std::shared_ptr aDoc = std::dynamic_pointer_cast( @@ -361,11 +330,11 @@ void Model_AttributeRefList::createHash() myHashObjects.insert(anObj); } } - myHashUsed = true; } + if (!myHashObjects.empty()) // on open document with multi-rotation referenced have no results + myHashUsed = true; } - void Model_AttributeRefList::eraseHash() { myHashObjects.clear();