From 87ecc9b4ca67be91881c5c52bb1261676e893d46 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Tue, 15 Jun 2021 16:09:50 -0500 Subject: [PATCH] Slip Contents Drag: fix undo --- gtk2_ardour/editor_drag.cc | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index cf6d61b72a..4a60a08634 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -691,7 +691,14 @@ void RegionSlipContentsDrag::motion (GdkEvent* event, bool first_move) { if (first_move) { - _editor->begin_reversible_command (_("Region content trim")); + + /*prepare reversible cmd*/ + _editor->begin_reversible_command (_("Slip Contents")); + for (list::iterator i = _views.begin(); i != _views.end(); ++i) { + RegionView* rv = i->view; + rv->region()->clear_changes (); + } + } else { for (list::iterator i = _views.begin(); i != _views.end(); ++i) { RegionView* rv = i->view; @@ -703,13 +710,24 @@ RegionSlipContentsDrag::motion (GdkEvent* event, bool first_move) } void -RegionSlipContentsDrag::finished (GdkEvent *, bool) +RegionSlipContentsDrag::finished (GdkEvent *, bool movement_occurred) { + if (movement_occurred) { + /*finish reversible cmd*/ + for (list::iterator i = _views.begin(); i != _views.end(); ++i) { + RegionView* rv = i->view; + _editor->session()->add_command (new StatefulDiffCommand (rv->region())); + } + _editor->commit_reversible_command (); + } + } void -RegionSlipContentsDrag::aborted (bool) +RegionSlipContentsDrag::aborted (bool movement_occurred) { + /* ToDo: revert to the original region properties */ + _editor->abort_reversible_command (); }