-// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
//
// 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<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#include "Model_AttributeRefList.h"
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();
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
}
theExtIter.Next();
} else { // internal document object
- anObj = theDoc->objects()->object(theLIter.Value());
+ TDF_Label aLab = theLIter.Value();
+ if (!aLab.IsNull())
+ anObj = theDoc->objects()->object(theLIter.Value());
}
}
return anObj;
}
}
-void Model_AttributeRefList::exchange(const ObjectPtr& theObject1, const ObjectPtr& theObject2)
-{
- std::shared_ptr<Model_Document> aDoc = std::dynamic_pointer_cast<Model_Document>(
- owner()->document());
- if (aDoc) {
- std::shared_ptr<Model_Data> aData1 = std::dynamic_pointer_cast<Model_Data>(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<Model_Data> aData2 =
- std::dynamic_pointer_cast<Model_Data>(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<Model_Document> aDoc = std::dynamic_pointer_cast<Model_Document>(
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();