add descratch plugin, single frame silence insert, docs
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindowedit.C
index b406c7b207f12c4d421eedb58e25b045e3292519..142c2a3849e9f06d5098bd28401abbfa598547e0 100644 (file)
@@ -1207,17 +1207,16 @@ if( debug ) printf("MWindow::load_assets %d\n", __LINE__);
                EDL *new_edl = new EDL;
                new_edl->create_objects();
                new_edl->copy_session(edl);
-               new_edls.append(new_edl);
-
                if( !indexable->is_asset ) {
                        EDL *nested_edl = (EDL*)indexable;
-                       new_edl->to_nested(nested_edl);
-                       new_edl->local_session->set_clip_path(nested_edl);
+                       new_edl->create_nested(nested_edl);
+                       new_edl->set_path(indexable->path);
                }
                else {
                        Asset *asset = (Asset*)indexable;
                        asset_to_edl(new_edl, asset);
                }
+               new_edls.append(new_edl);
 
                if( labels ) {
                        for( RecordLabel *label=labels->first; label; label=label->next ) {
@@ -1559,7 +1558,7 @@ int MWindow::paste_edls(ArrayList<EDL*> *new_edls, int load_mode,
                        edl->add_clip(new_edl->clips[j]);
                }
                for( int j=0; j<new_edl->nested_edls.size(); ++j ) {
-                       edl->nested_edls.get_copy(new_edl->nested_edls[j]);
+                       edl->nested_edls.get_nested(new_edl->nested_edls[j]);
                }
 
                if( new_edl->total_vwindow_edls() ) {
@@ -1601,6 +1600,10 @@ void MWindow::paste_silence()
 {
        double start = edl->local_session->get_selectionstart();
        double end = edl->local_session->get_selectionend();
+       if( EQUIV(start, end) ) {
+               if( edl->session->frame_rate > 0 )
+                       end += 1./edl->session->frame_rate;
+       }
        undo->update_undo_before();
        edl->paste_silence(start, end,
                edl->session->labels_follow_edits,
@@ -2380,6 +2383,18 @@ void MWindow::set_proxy(int use_scaler, int new_scale, int auto_scale,
                                }
                        }
                }
+               for( int j=0,m=edl->clips.size(); j<m; ++j ) {
+                       EDL *clip = edl->clips[j];
+                       for( Track *track=clip->tracks->first; track; track=track->next ) {
+                               if( track->data_type != TRACK_VIDEO ) continue;
+                               for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+                                       if( !edit->asset ) continue;
+                                       if( !strcmp(edit->asset->path, orig_assets->get(i)->path) ) {
+                                               edit->asset = proxy_asset;
+                                       }
+                               }
+                       }
+               }
        }
 }