diff options
author | Rafael Dominguez <venccsralph@gmail.com> | 2011-05-26 22:37:28 -0700 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2011-06-06 20:38:54 +0200 |
commit | 48c400e4fb0778bde199ca771f1ee2586c55a0ff (patch) | |
tree | f3f22f881d2387490eea732f8822d7b3370268f9 | |
parent | ab6eb1094675c7e7eb044a50a99f3771a95ea6fa (diff) |
Fix bug in CloneList
Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r-- | svx/source/svdraw/clonelist.cxx | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/svx/source/svdraw/clonelist.cxx b/svx/source/svdraw/clonelist.cxx index a39bb2f1f3..a14d469d00 100644 --- a/svx/source/svdraw/clonelist.cxx +++ b/svx/source/svdraw/clonelist.cxx @@ -85,6 +85,8 @@ SdrObject* CloneList::GetClone(sal_uInt32 nIndex) const void CloneList::CopyConnections() const { + sal_uInt32 cloneCount = maCloneList.size(); + for(sal_uInt32 a = 0; a < maOriginalList.size(); a++) { const SdrEdgeObj* pOriginalEdge = PTR_CAST(SdrEdgeObj, GetOriginal(a)); @@ -101,10 +103,17 @@ void CloneList::CopyConnections() const maOriginalList.end(), pOriginalNode1); + sal_uInt32 nPos = it - maOriginalList.begin(); + if(it != maOriginalList.end()) { - if(pOriginalEdge->GetConnectedNode(sal_True) != *it) - pCloneEdge->ConnectToNode(sal_True, const_cast<SdrObject*>(*it)); + SdrObject *cObj = NULL; + + if (nPos < cloneCount) + cObj = GetClone(nPos); + + if(pOriginalEdge->GetConnectedNode(sal_True) != cObj) + pCloneEdge->ConnectToNode(sal_True, cObj); } } @@ -114,10 +123,17 @@ void CloneList::CopyConnections() const maOriginalList.end(), pOriginalNode2); + sal_uInt32 nPos = it - maOriginalList.begin(); + if(it != maOriginalList.end()) { - if(pOriginalEdge->GetConnectedNode(sal_True) != *it) - pCloneEdge->ConnectToNode(sal_True, const_cast<SdrObject*>(*it)); + SdrObject *cObj = NULL; + + if (nPos < cloneCount) + cObj = GetClone(nPos); + + if(pOriginalEdge->GetConnectedNode(sal_False) != cObj) + pCloneEdge->ConnectToNode(sal_False, cObj); } } } |