# HG changeset patch # User Santeri Piippo # Date 1387407994 -7200 # Node ID e403aad83f60c8b9bef3d7e594663dcea16f6ab8 # Parent 79b23e02dcf1e0c7f57cbedc9fec8c90d85bf541 - history now works on object list moving as well diff -r 79b23e02dcf1 -r e403aad83f60 src/document.cc --- a/src/document.cc Thu Dec 19 00:59:49 2013 +0200 +++ b/src/document.cc Thu Dec 19 01:06:34 2013 +0200 @@ -1219,4 +1219,15 @@ // ----------------------------------------------------------------------------- const QList& LDDocument::getSelection() const { return m_sel; +} + +// ============================================================================= +// ----------------------------------------------------------------------------- +void LDDocument::swapObjects (LDObject* one, LDObject* other) +{ int a = m_Objects.indexOf (one); + int b = m_Objects.indexOf (other); + assert (a != b != -1); + m_Objects[b] = one; + m_Objects[a] = other; + addToHistory (new SwapHistory (one->getID(), other->getID())); } \ No newline at end of file diff -r 79b23e02dcf1 -r e403aad83f60 src/document.h --- a/src/document.h Thu Dec 19 00:59:49 2013 +0200 +++ b/src/document.h Thu Dec 19 01:06:34 2013 +0200 @@ -80,6 +80,7 @@ int getObjectCount() const; LDObject* getObject (int pos) const; bool save (str path = ""); // Saves this file to disk. + void swapObjects (LDObject* one, LDObject* other); bool isSafeToClose(); // Perform safety checks. Do this before closing any files! void setObject (int idx, LDObject* obj); diff -r 79b23e02dcf1 -r e403aad83f60 src/ldtypes.cc --- a/src/ldtypes.cc Thu Dec 19 00:59:49 2013 +0200 +++ b/src/ldtypes.cc Thu Dec 19 01:06:34 2013 +0200 @@ -237,18 +237,8 @@ // ============================================================================= // ----------------------------------------------------------------------------- void LDObject::swap (LDObject* other) -{ int i = 0; - - for (LDObject* obj : getFile()->getObjects()) - { if (obj == this) - getFile()->setObject (i, other); - elif (obj == other) - getFile()->setObject (i, this); - - ++i; - } - - getFile()->addToHistory (new SwapHistory (getID(), other->getID())); +{ assert (getFile() == other->getFile()); + getFile()->swapObjects (this, other); } // =============================================================================