summaryrefslogtreecommitdiff
path: root/muse2/muse/midiedit/ecanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/midiedit/ecanvas.cpp')
-rw-r--r--muse2/muse/midiedit/ecanvas.cpp46
1 files changed, 27 insertions, 19 deletions
diff --git a/muse2/muse/midiedit/ecanvas.cpp b/muse2/muse/midiedit/ecanvas.cpp
index d41a383c..ef47e0d6 100644
--- a/muse2/muse/midiedit/ecanvas.cpp
+++ b/muse2/muse/midiedit/ecanvas.cpp
@@ -102,25 +102,6 @@ QPoint EventCanvas::raster(const QPoint& p) const
}
//---------------------------------------------------------
-// startUndo
-//---------------------------------------------------------
-
-void EventCanvas::startUndo(DragType)
- {
- song->startUndo();
- }
-
-//---------------------------------------------------------
-// endUndo
-//---------------------------------------------------------
-
-void EventCanvas::endUndo(DragType dtype, int flags)
- {
- song->endUndo(flags | ((dtype == MOVE_COPY || dtype == MOVE_CLONE)
- ? SC_EVENT_INSERTED : SC_EVENT_MODIFIED));
- }
-
-//---------------------------------------------------------
// mouseMove
//---------------------------------------------------------
@@ -414,3 +395,30 @@ void EventCanvas::viewDropEvent(QDropEvent* event)
}
}
+
+//---------------------------------------------------------
+// endMoveItems
+// dir = 0 move in all directions
+// 1 move only horizontal
+// 2 move only vertical
+//---------------------------------------------------------
+
+void EventCanvas::endMoveItems(const QPoint& pos, DragType dragtype, int dir)
+ {
+ int dp = y2pitch(pos.y()) - y2pitch(Canvas::start.y());
+ int dx = pos.x() - Canvas::start.x();
+
+ if (dir == 1)
+ dp = 0;
+ else if (dir == 2)
+ dx = 0;
+
+
+
+ Undo operations = moveCanvasItems(moving, dp, dx, dragtype);
+ song->applyOperationGroup(operations);
+
+ moving.clear();
+ updateSelection();
+ redraw();
+ }