change to id based refs for plugins, save plugin on/off in edit drag/drop, fix transi...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / edl.C
index dbda78c10612085bb960d17727ae60bf2fe7b4a3..25496d4b8d6b01bcf66de94f30917b9e26079549 100644 (file)
@@ -212,7 +212,7 @@ int EDL::read_xml(FileXML *file, uint32_t load_flags)
                                file->tag.title_is("/CLIP_EDL") ||
                                file->tag.title_is("/NESTED_EDL") ||
                                file->tag.title_is("/VWINDOW_EDL") ) {
-                               result = 1;
+                               break;
                        }
                        else
                        if( file->tag.title_is("CLIPBOARD") ) {
@@ -664,14 +664,19 @@ void EDL::create_nested(EDL *nested)
 void EDL::overwrite_clip(EDL *clip)
 {
        int folder = folder_no;
-       char clip_title[BCTEXTLEN];  strcpy(clip_title, local_session->clip_title);
-       char clip_notes[BCTEXTLEN];  strcpy(clip_notes, local_session->clip_notes);
-       char clip_icon[BCSTRLEN];    strcpy(clip_icon,  local_session->clip_icon);
+       char clip_title[BCTEXTLEN], clip_notes[BCTEXTLEN], clip_icon[BCSTRLEN];
+       if( parent_edl ) {
+               strcpy(clip_title, local_session->clip_title);
+               strcpy(clip_notes, local_session->clip_notes);
+               strcpy(clip_icon,  local_session->clip_icon);
+       }
        copy_all(clip);
        folder_no = folder;
-       strcpy(local_session->clip_title, clip_title);
-       strcpy(local_session->clip_notes, clip_notes);
-       strcpy(local_session->clip_icon, clip_icon);
+       if( parent_edl ) {
+               strcpy(local_session->clip_title, clip_title);
+               strcpy(local_session->clip_notes, clip_notes);
+               strcpy(local_session->clip_icon, clip_icon);
+       }
        if( !clip_icon[0] ) return;
 // discard old clip icon to reconstruct 
        char clip_icon_path[BCTEXTLEN];
@@ -2129,6 +2134,7 @@ void EDL::paste_edits(EDL *clip, Track *first_track, double position, int overwr
                                        Plugin *new_plugin = dst_plugin_set->insert_plugin(plugin->title,
                                                start, end-start, plugin->plugin_type, &plugin->shared_location,
                                                (KeyFrame*)plugin->keyframes->default_auto, 0);
+                                       new_plugin->on = plugin->on;
                                        KeyFrame *keyframe = (KeyFrame*)plugin->keyframes->first;
                                        for( ; keyframe; keyframe=(KeyFrame*)keyframe->next ) {
                                                int64_t keyframe_pos = pos + keyframe->position;