From 708011ca445e6096d693bde77b63b43b9de78e54 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Mon, 18 Dec 2017 17:59:56 +0000 Subject: adding node position tracking for undo --- tikzit/src/gui/undocommands.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'tikzit/src/gui/undocommands.cpp') diff --git a/tikzit/src/gui/undocommands.cpp b/tikzit/src/gui/undocommands.cpp index 38f7569..6d48fc4 100644 --- a/tikzit/src/gui/undocommands.cpp +++ b/tikzit/src/gui/undocommands.cpp @@ -1,16 +1,29 @@ #include "undocommands.h" -MoveCommand::MoveCommand(TikzScene *scene, QUndoCommand *parent) : QUndoCommand(parent) +MoveCommand::MoveCommand(TikzScene *scene, + QMap oldNodePositions, + QMap newNodePositions, + QUndoCommand *parent) : + QUndoCommand(parent), + _scene(scene), + _oldNodePositions(oldNodePositions), + _newNodePositions(newNodePositions) { - _scene = scene; } + void MoveCommand::undo() { - + foreach (NodeItem *ni, _scene->nodeItems()) { + if (_oldNodePositions.contains(ni->node())) + ni->node()->setPoint(_oldNodePositions.value(ni->node())); + } } void MoveCommand::redo() { - + foreach (NodeItem *ni, _scene->nodeItems()) { + if (_newNodePositions.contains(ni->node())) + ni->node()->setPoint(_newNodePositions.value(ni->node())); + } } -- cgit v1.2.3