summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-02-08 19:41:43 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-02-08 19:41:43 +0000
commit30dd55bccdb96298179f51c8583f594124b97049 (patch)
treec8a871e3922f9289db21342c7735a8d441f460dc
parente2baff4f7d00c97dc4192c5ac573aeee8950b2ae (diff)
use RegionCommand for same-track region drags
git-svn-id: svn://localhost/ardour2/branches/3.0@6653 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/audio_streamview.cc4
-rw-r--r--gtk2_ardour/editor_drag.cc12
-rw-r--r--gtk2_ardour/editor_mouse.cc4
-rw-r--r--gtk2_ardour/midi_streamview.cc4
4 files changed, 14 insertions, 10 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index b6abbb4b22..8c427f2621 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -661,7 +661,7 @@ AudioStreamView::update_rec_regions ()
region->freeze ();
region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this);
region->set_length (nlen, this);
- region->thaw ("updated");
+ region->thaw ();
if (origlen == 1) {
/* our special initial length */
@@ -686,7 +686,7 @@ AudioStreamView::update_rec_regions ()
region->freeze ();
region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this);
region->set_length (nlen, this);
- region->thaw ("updated");
+ region->thaw ();
if (origlen == 1) {
/* our special initial length */
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 0739e91bb1..17c09737d2 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -22,6 +22,7 @@
#include "pbd/memento_command.h"
#include "pbd/basename.h"
#include "ardour/diskstream.h"
+#include "ardour/region_command.h"
#include "ardour/session.h"
#include "ardour/dB.h"
#include "ardour/region_factory.h"
@@ -949,6 +950,8 @@ RegionMoveDrag::finished (GdkEvent* /*event*/, bool movement_occurred)
}
} else {
+ RegionCommand* rcmd = new RegionCommand (rv->region());
+
/*
motion on the same track. plonk the previously reparented region
back to its original canvas group (its streamview).
@@ -962,10 +965,12 @@ RegionMoveDrag::finished (GdkEvent* /*event*/, bool movement_occurred)
/* just change the model */
boost::shared_ptr<Playlist> playlist = dest_rtv->playlist();
-
+
if (dest_rtv->view()->layer_display() == Stacked) {
+ layer_t old_layer = rv->region()->layer();
rv->region()->set_layer (dest_layer);
rv->region()->set_pending_explicit_relayer (true);
+ rcmd->add_property_change (RegionCommand::Layer, old_layer, dest_layer);
}
/* freeze playlist to avoid lots of relayering in the case of a multi-region drag */
@@ -976,10 +981,11 @@ RegionMoveDrag::finished (GdkEvent* /*event*/, bool movement_occurred)
playlist->freeze();
}
- XMLNode& before (rv->region()->get_state());
+ nframes64_t old_pos = rv->region()->position();
rv->region()->set_position (where, (void*) this);
- _editor->session()->add_command (new MementoCommand<Region>(*rv->region(), &before, &playlist->get_state()));
+ rcmd->add_property_change (RegionCommand::Position, old_pos, where);
+ _editor->session()->add_command (rcmd);
}
if (changed_tracks && !_copy) {
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 64d1bf39f7..3119729bab 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -2354,7 +2354,7 @@ Editor::thaw_region_after_trim (RegionView& rv)
return;
}
- region->thaw (_("trimmed region"));
+ region->thaw ();
AudioRegionView* arv = dynamic_cast<AudioRegionView*>(&rv);
@@ -2488,8 +2488,6 @@ Editor::add_region_drag (ArdourCanvas::Item* item, GdkEvent* event, RegionView*
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, false));
}
- begin_reversible_command (_("move region(s)"));
-
/* sync the canvas to what we think is its current state */
update_canvas_now();
}
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc
index a8eb1c762b..2982772a62 100644
--- a/gtk2_ardour/midi_streamview.cc
+++ b/gtk2_ardour/midi_streamview.cc
@@ -554,7 +554,7 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t
region->freeze ();
region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this);
region->set_length (start + dur - region->position(), this);
- region->thaw ("updated");
+ region->thaw ();
if (origlen == 1) {
/* our special initial length */
@@ -618,7 +618,7 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t
region->freeze ();
region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this);
region->set_length (nlen, this);
- region->thaw ("updated");
+ region->thaw ();
if (origlen == 1) {
/* our special initial length */