{
RegionView* rv = _primary;
- /* snap modifier works differently here..
- its current state has to be passed to the
- various trim functions in order to work properly
- */
-
double speed = 1.0;
TimeAxisView* tvp = &_primary->get_time_axis_view ();
RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
speed = tv->track()->speed();
}
- framepos_t const pf = adjusted_current_frame (event);
+ framecnt_t const dt = adjusted_current_frame (event) - grab_frame ();
if (first_move) {
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
RegionView* rv = i->view;
- rv->fake_set_opaque(false);
+ rv->fake_set_opaque (false);
rv->enable_display (false);
rv->region()->clear_changes ();
AudioRegionView* const arv = dynamic_cast<AudioRegionView*> (rv);
- if (arv){
+ if (arv) {
arv->temporarily_hide_envelope ();
}
switch (_operation) {
case StartTrim:
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
- i->view->trim_start (pf, non_overlap_trim);
+ i->view->trim_start (i->initial_position + dt, non_overlap_trim);
}
break;
case EndTrim:
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
- i->view->trim_end (pf, non_overlap_trim);
+ i->view->trim_end (i->initial_end + dt, non_overlap_trim);
}
break;
framecnt_t frame_delta = 0;
bool left_direction = false;
- if (last_pointer_frame() > pf) {
+ if (last_pointer_frame() > adjusted_current_frame(event)) {
left_direction = true;
}
if (left_direction) {
- frame_delta = (last_pointer_frame() - pf);
+ frame_delta = (last_pointer_frame() - adjusted_current_frame(event));
} else {
- frame_delta = (pf - last_pointer_frame());
+ frame_delta = (adjusted_current_frame(event) - last_pointer_frame());
}
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
switch (_operation) {
case StartTrim:
- _editor->show_verbose_time_cursor((framepos_t) (rv->region()->position()/speed), 10);
+ _editor->show_verbose_time_cursor ((framepos_t) (rv->region()->position() / speed), 10);
break;
case EndTrim:
- _editor->show_verbose_time_cursor((framepos_t) (rv->region()->last_frame()/speed), 10);
+ _editor->show_verbose_time_cursor ((framepos_t) (rv->region()->last_frame() / speed), 10);
break;
case ContentsTrim:
- _editor->show_verbose_time_cursor (pf, 10);
+ _editor->show_verbose_time_cursor (adjusted_current_frame (event), 10);
break;
}
}
layer = v->region()->layer ();
initial_y = v->get_canvas_group()->property_y ();
initial_playlist = v->region()->playlist ();
+ initial_position = v->region()->position ();
+ initial_end = v->region()->position () + v->region()->length ();
}