diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2017-12-22 13:39:13 +0000 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2017-12-22 13:39:13 +0000 |
commit | d8db367f6a4e49776834c82b092700dbda56cecc (patch) | |
tree | f06b386f2a160a8f0b6e8c10e6f4353b3fed3d47 /tikzit/src/gui/tikzscene.cpp | |
parent | 9d8317cd593d47911bb6b2e6fb8ef0077e24ae36 (diff) |
edge bend undo works
Diffstat (limited to 'tikzit/src/gui/tikzscene.cpp')
-rw-r--r-- | tikzit/src/gui/tikzscene.cpp | 20 |
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 { |