13
0

shift-modifier during trim dragging causes region to jump to original position (anchored at start or end, depending on trim type)

This commit is contained in:
Paul Davis 2014-05-07 12:13:34 -04:00
parent e99c8960c0
commit 56af57d682
2 changed files with 13 additions and 1 deletions

View File

@ -1789,9 +1789,10 @@ VideoTimeLineDrag::aborted (bool)
TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v, bool preserve_fade_anchor)
: RegionDrag (e, i, p, v)
, _preserve_fade_anchor (preserve_fade_anchor)
, _jump_position_when_done (false)
{
DEBUG_TRACE (DEBUG::Drags, "New TrimDrag\n");
_preserve_fade_anchor = preserve_fade_anchor;
}
void
@ -1828,6 +1829,10 @@ TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
}
}
if (Keyboard::modifier_state_equals (event->button.state, Keyboard::TertiaryModifier)) {
_jump_position_when_done = true;
}
switch (_operation) {
case StartTrim:
show_verbose_cursor_time (region_start);
@ -2007,6 +2012,9 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred)
ar->set_fade_in_length(new_length);
}
}
if (_jump_position_when_done) {
i->view->region()->set_position (i->initial_position);
}
}
} else if (_operation == EndTrim) {
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
@ -2024,6 +2032,9 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred)
ar->set_fade_out_length(new_length);
}
}
if (_jump_position_when_done) {
i->view->region()->set_position (i->initial_end - i->view->region()->length());
}
}
}

View File

@ -572,6 +572,7 @@ private:
Operation _operation;
bool _preserve_fade_anchor;
bool _jump_position_when_done;
};
/** Meter marker drag */