int MWindow::modify_edithandles()
{
undo->update_undo_before();
+ int handle_mode = edl->session->edit_handle_mode[session->drag_button];
edl->modify_edithandles(session->drag_start,
- session->drag_position,
- session->drag_handle,
- edl->session->edit_handle_mode[session->drag_button],
+ 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);
-
finish_modify_handles();
//printf("MWindow::modify_handles 1\n");
return 0;
void MWindow::finish_modify_handles()
{
int edit_mode = edl->session->edit_handle_mode[session->drag_button];
-
- if( (session->drag_handle == 1 && edit_mode != MOVE_NO_EDITS) ||
- (session->drag_handle == 0 && edit_mode == MOVE_ONE_EDIT) ) {
-//printf("MWindow::finish_modify_handles %d\n", __LINE__);
- edl->local_session->set_selectionstart(session->drag_position);
- edl->local_session->set_selectionend(session->drag_position);
- }
- else
- if( edit_mode != MOVE_NO_EDITS ) {
-//printf("MWindow::finish_modify_handles %d\n", __LINE__);
- edl->local_session->set_selectionstart(session->drag_start);
- edl->local_session->set_selectionend(session->drag_start);
- }
-
-// clamp the selection to 0
- if( edl->local_session->get_selectionstart(1) < 0 ) {
- edl->local_session->set_selectionstart(0);
- edl->local_session->set_selectionend(0);
+ double position = -1;
+ switch( edit_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 ) {
+ edl->local_session->set_selectionstart(position);
+ edl->local_session->set_selectionend(position);
}
undo->update_undo_after(_("drag handle"), LOAD_EDITS | LOAD_TIMEBAR);
if( load_mode != LOADMODE_RESOURCESONLY &&
load_mode != LOADMODE_ASSETSONLY ) {
// Insert labels
+ if( edl->session->labels_follow_edits ) {
//printf("MWindow::paste_edls %f %f\n", current_position, edl_length);
- if( load_mode == LOADMODE_PASTE ||
- load_mode == LOADMODE_NESTED )
- edl->labels->insert_labels(new_edl->labels,
- destination_tracks.total ? paste_position[0] : 0.0,
- edl_length,
- edit_labels);
- else
- edl->labels->insert_labels(new_edl->labels,
- current_position,
- edl_length,
- edit_labels);
+ if( load_mode == LOADMODE_PASTE || load_mode == LOADMODE_NESTED )
+ edl->labels->insert_labels(new_edl->labels,
+ destination_tracks.total ? paste_position[0] : 0.0,
+ edl_length, edit_labels);
+ else
+ edl->labels->insert_labels(new_edl->labels, current_position,
+ edl_length, edit_labels);
+ }
//PRINT_TRACE
double total_length = new_edl->tracks->total_length();
for( Track *new_track=new_edl->tracks->first;