summaryrefslogtreecommitdiff
path: root/tikzit
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2017-12-19 23:02:35 +0000
committerAleks Kissinger <aleks0@gmail.com>2017-12-19 23:02:35 +0000
commit82bdd42a475d240bb08e201a47b0972d0b2862a6 (patch)
tree9e8dac8124ee46e6416edb710e2d0ca499ddd8d6 /tikzit
parent144c37b05a065126aaf6ece7f9e5a8b56ec45f45 (diff)
undo move works
Diffstat (limited to 'tikzit')
-rw-r--r--tikzit/src/gui/mainmenu.cpp6
-rw-r--r--tikzit/src/gui/mainwindow.cpp5
-rw-r--r--tikzit/src/gui/mainwindow.h1
-rw-r--r--tikzit/src/gui/undocommands.cpp18
4 files changed, 26 insertions, 4 deletions
diff --git a/tikzit/src/gui/mainmenu.cpp b/tikzit/src/gui/mainmenu.cpp
index 6c8f395..c9e83ba 100644
--- a/tikzit/src/gui/mainmenu.cpp
+++ b/tikzit/src/gui/mainmenu.cpp
@@ -36,12 +36,14 @@ void MainMenu::on_actionSave_As_triggered()
// Edit
void MainMenu::on_actionUndo_triggered()
{
- // TODO
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzDocument()->undoStack()->undo();
}
void MainMenu::on_actionRedo_triggered()
{
- // TODO
+ if (tikzit->activeWindow() != 0)
+ tikzit->activeWindow()->tikzDocument()->undoStack()->redo();
}
void MainMenu::on_actionCut_triggered()
diff --git a/tikzit/src/gui/mainwindow.cpp b/tikzit/src/gui/mainwindow.cpp
index 740c0eb..19b6a59 100644
--- a/tikzit/src/gui/mainwindow.cpp
+++ b/tikzit/src/gui/mainwindow.cpp
@@ -71,6 +71,11 @@ void MainWindow::changeEvent(QEvent *event)
QMainWindow::changeEvent(event);
}
+TikzDocument *MainWindow::tikzDocument() const
+{
+ return _tikzDocument;
+}
+
TikzScene *MainWindow::tikzScene() const
{
return _tikzScene;
diff --git a/tikzit/src/gui/mainwindow.h b/tikzit/src/gui/mainwindow.h
index 4af3357..f27677a 100644
--- a/tikzit/src/gui/mainwindow.h
+++ b/tikzit/src/gui/mainwindow.h
@@ -30,6 +30,7 @@ public:
int windowId() const;
TikzView *tikzView() const;
TikzScene *tikzScene() const;
+ TikzDocument *tikzDocument() const;
protected:
void closeEvent(QCloseEvent *event);
diff --git a/tikzit/src/gui/undocommands.cpp b/tikzit/src/gui/undocommands.cpp
index 6d48fc4..b8a045b 100644
--- a/tikzit/src/gui/undocommands.cpp
+++ b/tikzit/src/gui/undocommands.cpp
@@ -15,15 +15,29 @@ MoveCommand::MoveCommand(TikzScene *scene,
void MoveCommand::undo()
{
foreach (NodeItem *ni, _scene->nodeItems()) {
- if (_oldNodePositions.contains(ni->node()))
+ if (_oldNodePositions.contains(ni->node())) {
ni->node()->setPoint(_oldNodePositions.value(ni->node()));
+ ni->readPos();
+ }
+ }
+
+ foreach (EdgeItem *ei, _scene->edgeItems()) {
+ ei->edge()->updateControls();
+ ei->syncPos();
}
}
void MoveCommand::redo()
{
foreach (NodeItem *ni, _scene->nodeItems()) {
- if (_newNodePositions.contains(ni->node()))
+ if (_newNodePositions.contains(ni->node())) {
ni->node()->setPoint(_newNodePositions.value(ni->node()));
+ ni->readPos();
+ }
+ }
+
+ foreach (EdgeItem *ei, _scene->edgeItems()) {
+ ei->edge()->updateControls();
+ ei->syncPos();
}
}