summaryrefslogtreecommitdiff
path: root/tikzit/src/gui/tikzscene.cpp
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2017-12-22 13:39:13 +0000
committerAleks Kissinger <aleks0@gmail.com>2017-12-22 13:39:13 +0000
commitd8db367f6a4e49776834c82b092700dbda56cecc (patch)
treef06b386f2a160a8f0b6e8c10e6f4353b3fed3d47 /tikzit/src/gui/tikzscene.cpp
parent9d8317cd593d47911bb6b2e6fb8ef0077e24ae36 (diff)
edge bend undo works
Diffstat (limited to 'tikzit/src/gui/tikzscene.cpp')
-rw-r--r--tikzit/src/gui/tikzscene.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/tikzit/src/gui/tikzscene.cpp b/tikzit/src/gui/tikzscene.cpp
index b502f84..619d916 100644
--- a/tikzit/src/gui/tikzscene.cpp
+++ b/tikzit/src/gui/tikzscene.cpp
@@ -89,7 +89,13 @@ void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
if (_modifyEdgeItem != 0) {
// disable rubber band drag, which will clear the selection
views()[0]->setDragMode(QGraphicsView::NoDrag);
- qDebug() << "Got a control point";
+
+ // store for undo purposes
+ Edge *e = _modifyEdgeItem->edge();
+ _oldBend = e->bend();
+ _oldInAngle = e->inAngle();
+ _oldOutAngle = e->outAngle();
+ _oldWeight = e->weight();
} else {
// since we are not dragging a control point, process the click normally
views()[0]->setDragMode(QGraphicsView::RubberBandDrag);
@@ -124,6 +130,7 @@ void TikzScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
case ToolPalette::SELECT:
if (_modifyEdgeItem != 0) {
Edge *e = _modifyEdgeItem->edge();
+
// dragging a control point
QPointF src = toScreen(e->source()->point());
QPointF targ = toScreen(e->target()->point());
@@ -222,7 +229,16 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
case ToolPalette::SELECT:
if (_modifyEdgeItem != 0) {
// finished dragging a control point
- // TODO
+ Edge *e = _modifyEdgeItem->edge();
+
+ if (_oldWeight != e->weight() ||
+ _oldBend != e->bend() ||
+ _oldInAngle != e->inAngle() ||
+ _oldOutAngle != e->outAngle())
+ {
+ EdgeBendCommand *cmd = new EdgeBendCommand(this, e, _oldWeight, _oldBend, _oldInAngle, _oldOutAngle);
+ _tikzDocument->undoStack()->push(cmd);
+ }
_modifyEdgeItem = 0;
} else {