drag edithandle rework, lib x264/x265 update, dvb fixes, batchrender boot_defaults...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mwindowedit.C
index 67f4402c73664674a6a0fd74cc3e8804ea2c17fc..b6432aa6101b955354f6244d1a1db879ee5c3c66 100644 (file)
@@ -861,24 +861,11 @@ int MWindow::modify_pluginhandles()
 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);
+       if( edit_mode != MOVE_MEDIA ) {
+               double position = session->drag_position ;
+               if( position < 0 ) position = 0;
+               edl->local_session->set_selectionstart(position);
+               edl->local_session->set_selectionend(position);
        }
        undo->update_undo_after(_("drag handle"), LOAD_EDITS | LOAD_TIMEBAR);
 
@@ -1880,18 +1867,16 @@ int MWindow::paste_edls(ArrayList<EDL*> *new_edls, int load_mode,
                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;