X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrackcanvas.C;h=dd48141ab7d6c1c4af1d38a0629d3f79629041d1;hp=638e04341397691512d9f596617e2208723263ee;hb=54cc56bff09f5004b2a6cd454375f06e56acf5a0;hpb=010024a919b463542b843cf2dd50e0ccb30f1269 diff --git a/cinelerra-5.1/cinelerra/trackcanvas.C b/cinelerra-5.1/cinelerra/trackcanvas.C index 638e0434..dd48141a 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.C +++ b/cinelerra-5.1/cinelerra/trackcanvas.C @@ -3808,18 +3808,28 @@ void TrackCanvas::update_drag_handle() edl->create_objects(); edl->copy_all(mwindow->edl); MainSession *session = mwindow->session; - int edit_mode = mwindow->edl->session->edit_handle_mode[session->drag_button]; + int handle_mode = mwindow->edl->session->edit_handle_mode[session->drag_button]; edl->modify_edithandles(session->drag_start, - session->drag_position, - session->drag_handle, - edit_mode, + session->drag_position, session->drag_handle, handle_mode, edl->session->labels_follow_edits, edl->session->plugins_follow_edits, edl->session->autos_follow_edits, - session->drag_edit->group_id); - double position = edit_mode != MOVE_NO_EDITS && - ( session->drag_handle || edit_mode == MOVE_ONE_EDIT ) ? - session->drag_position : session->drag_start; + !session->drag_edit ? 0 : session->drag_edit->group_id); + + double position = -1; + switch( handle_mode ) { + case MOVE_RIPPLE: + case MOVE_ROLL: + case MOVE_SLIDE: + position = session->drag_position; + break; + case MOVE_SLIP: + case MOVE_EDGE: + position = session->drag_start; + break; + } + + if( position < 0 ) position = 0; Track *track = session->drag_handle_track(); int64_t pos = track->to_units(position, 0); render_handle_frame(edl, pos, shift_down() ? 0 :