From b83f21c3cf6f9385697ce4b2ca2b0f840a8438aa Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 7 Dec 2010 15:13:04 +0000 Subject: [PATCH] add "shift" method used in 2.X and now a3 to move data starting at a position, not an iterator git-svn-id: svn://localhost/ardour2/branches/3.0@8208 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/evoral/evoral/ControlList.hpp | 1 + libs/evoral/src/ControlList.cpp | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/libs/evoral/evoral/ControlList.hpp b/libs/evoral/evoral/ControlList.hpp index e69a756b08..16d0400145 100644 --- a/libs/evoral/evoral/ControlList.hpp +++ b/libs/evoral/evoral/ControlList.hpp @@ -113,6 +113,7 @@ public: void x_scale (double factor); bool extend_to (double); void slide (iterator before, double distance); + void shift (double before, double distance); void rt_add (double when, double value); void add (double when, double value); diff --git a/libs/evoral/src/ControlList.cpp b/libs/evoral/src/ControlList.cpp index b41141a61e..b717190768 100644 --- a/libs/evoral/src/ControlList.cpp +++ b/libs/evoral/src/ControlList.cpp @@ -534,6 +534,26 @@ ControlList::slide (iterator before, double distance) (*before)->when += distance; ++before; } + + mark_dirty (); + } + + maybe_signal_changed (); +} + +void +ControlList::shift (double pos, double frames) +{ + { + Glib::Mutex::Lock lm (_lock); + + for (iterator i = _events.begin(); i != _events.end(); ++i) { + if ((*i)->when >= pos) { + (*i)->when += frames; + } + } + + mark_dirty (); } maybe_signal_changed ();