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:
parent
e99c8960c0
commit
56af57d682
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -572,6 +572,7 @@ private:
|
||||
Operation _operation;
|
||||
|
||||
bool _preserve_fade_anchor;
|
||||
bool _jump_position_when_done;
|
||||
};
|
||||
|
||||
/** Meter marker drag */
|
||||
|
Loading…
Reference in New Issue
Block a user