add audio to proxy, and minor bug fixes
[goodguy/history.git] / cinelerra-5.1 / cinelerra / clippopup.C
index a364947a94269793fc6db9c92221f263e97cc167..677b9bedf4ff4a6cb17b859492f2ba6b03d7ea30 100644 (file)
@@ -219,21 +219,18 @@ ClipPopupViewWindow::~ClipPopupViewWindow()
 
 int ClipPopupViewWindow::handle_event()
 {
-// Find window with nothing
-       VWindow *vwindow = mwindow->get_viewer(1);
-
-// TODO: create new vwindow or change current vwindow
-       vwindow->gui->lock_window("ClipPopupView::handle_event");
-
-       if( mwindow->session->drag_assets->total )
-               vwindow->change_source(
-                       mwindow->session->drag_assets->values[0]);
-       else
-       if( mwindow->session->drag_clips->total )
-               vwindow->change_source(
-                       mwindow->session->drag_clips->values[0]);
-
-       vwindow->gui->unlock_window();
+       for( int i=0; i<mwindow->session->drag_assets->size(); ++i ) {
+               VWindow *vwindow = mwindow->get_viewer(1);
+               vwindow->gui->lock_window("ClipPopupView::handle_event 1");
+               vwindow->change_source(mwindow->session->drag_assets->get(i));
+               vwindow->gui->unlock_window();
+       }
+       for( int i=0; i<mwindow->session->drag_clips->size(); ++i ) {
+               VWindow *vwindow = mwindow->get_viewer(1);
+               vwindow->gui->lock_window("ClipPopupView::handle_event 2");
+               vwindow->change_source(mwindow->session->drag_clips->get(i));
+               vwindow->gui->unlock_window();
+       }
        return 1;
 }
 
@@ -253,10 +250,14 @@ int ClipPopupCopy::handle_event()
        MWindowGUI *gui = mwindow->gui;
        gui->lock_window("ClipPopupCopy::handle_event");
        if( mwindow->session->drag_clips->total > 0 ) {
-               FileXML file;
                EDL *edl = mwindow->session->drag_clips->values[0];
+               EDL *copy_edl = new EDL; // no parent or assets wont be copied
+               copy_edl->create_objects();
+               copy_edl->copy_all(edl);
+               FileXML file;
                double start = 0, end = edl->tracks->total_length();
-               edl->copy(start, end, 1, &file, "", 1);
+               copy_edl->copy(start, end, 1, &file, "", 1);
+               copy_edl->remove_user();
                const char *file_string = file.string();
                long file_length = strlen(file_string);
                gui->to_clipboard(file_string, file_length, SECONDARY_SELECTION);