Allow to override A/V-lock (when moving audio)

This commit is contained in:
Robin Gareus 2015-09-08 02:51:58 +02:00
parent 88f532ed6a
commit c315c6f140
2 changed files with 9 additions and 3 deletions

View File

@ -593,6 +593,7 @@ RegionDrag::find_time_axis_view (TimeAxisView* t) const
RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v, bool b)
: RegionDrag (e, i, p, v)
, _brushing (b)
, _ignore_video_lock (false)
, _total_x_delta (0)
, _last_pointer_time_axis_view (0)
, _last_pointer_layer (0)
@ -618,6 +619,10 @@ RegionMotionDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
_last_pointer_layer = tv.first->layer_display() == Overlaid ? 0 : tv.second;
}
if (Keyboard::modifier_state_equals (event->button.state, Keyboard::ModifierMask (Keyboard::TertiaryModifier))) {
_ignore_video_lock = true;
}
if (_brushing) {
/* cross track dragging seems broken here. disabled for now. */
_y_constrained = true;
@ -1008,7 +1013,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move)
y_delta = 0;
if (rv->region()->locked() || rv->region()->video_locked()) {
if (rv->region()->locked() || (rv->region()->video_locked() && !_ignore_video_lock)) {
continue;
}
@ -1430,7 +1435,7 @@ RegionMoveDrag::finished_copy (bool const changed_position, bool const /*changed
RouteTimeAxisView* dest_rtv = 0;
if (i->view->region()->locked() || i->view->region()->video_locked()) {
if (i->view->region()->locked() || (i->view->region()->video_locked() && !_ignore_video_lock)) {
continue;
}
@ -1513,7 +1518,7 @@ RegionMoveDrag::finished_no_copy (
RegionView* rv = i->view;
RouteTimeAxisView* dest_rtv = 0;
if (rv->region()->locked() || rv->region()->video_locked()) {
if (rv->region()->locked() || (rv->region()->video_locked() && !_ignore_video_lock)) {
++i;
continue;
}

View File

@ -362,6 +362,7 @@ protected:
virtual bool y_movement_allowed (int, double, int skip_invisible = 0) const;
bool _brushing;
bool _ignore_video_lock;
ARDOUR::framepos_t _last_frame_position; ///< last position of the thing being dragged
double _total_x_delta;
int _last_pointer_time_axis_view;