X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSUIT%2FSUIT_DataObject.cxx;h=af2cef66a012deede35dd452b603fdd727ded8f8;hb=e6caa123c65e3c4a3017364ec5bb4225fd898465;hp=8c8b3e78a48fa96d76bcf9e481620b760e5ca459;hpb=e4b132cf6375e1f4bc1fef8ce9eb7aaf703e2ffc;p=modules%2Fgui.git diff --git a/src/SUIT/SUIT_DataObject.cxx b/src/SUIT/SUIT_DataObject.cxx index 8c8b3e78a..af2cef66a 100755 --- a/src/SUIT/SUIT_DataObject.cxx +++ b/src/SUIT/SUIT_DataObject.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -138,6 +138,25 @@ int SUIT_DataObject::childPos( const SUIT_DataObject* obj ) const return myChildren.indexOf( (SUIT_DataObject*)obj ); } +/*! + \brief Moves the child position from current to new one. + \param theObj child object + \param theNewPos child objectnew position in the children list + +*/ +void SUIT_DataObject::moveChildPos( SUIT_DataObject* theObj, int theNewPos) +{ + if (myChildren.size() <= 1) return; + + int aNewPos = theNewPos; + if (aNewPos < 0) aNewPos = 0; + if (aNewPos > (myChildren.size() - 1)) aNewPos = myChildren.size() - 1; + + if (myChildren.removeOne(theObj)) + myChildren.insert(aNewPos, theObj); +} + + /*! \brief Get child object by the specified index. \param idx child object index @@ -180,6 +199,16 @@ int SUIT_DataObject::position() const return myParent ? myParent->childPos( this ) : 0; } +/*! + \brief Sets new position of the object in parent's list +*/ +void SUIT_DataObject::setPosition(int theNewPos) +{ + if (theNewPos == position()) return; + if (!myParent) return; + myParent->moveChildPos(this, theNewPos); +} + /*! \brief Get the next sibling data object in the children list. \return child object or 0 if there is no next sibling