X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fawindowgui.C;h=409ba26ff35884b54f1014c172628ac44d7be3ba;hp=9be5b66ba743405552d4b4a4a384de0508395173;hb=a95193c3fd88733d184f2d460eca1fe6ddf8af28;hpb=2f7295c1067fb2935ddc215831431c2959782ee3 diff --git a/cinelerra-5.1/cinelerra/awindowgui.C b/cinelerra-5.1/cinelerra/awindowgui.C index 9be5b66b..409ba26f 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.C +++ b/cinelerra-5.1/cinelerra/awindowgui.C @@ -1676,8 +1676,8 @@ EDL *AWindowGUI::collect_proxy(Indexable *indexable) // make a clip from proxy video tracks and unproxy audio tracks EDL *proxy_edl = new EDL(mwindow->edl); proxy_edl->create_objects(); + proxy_edl->set_path(proxy_asset->path); FileSystem fs; fs.extract_name(path, proxy_asset->path); - proxy_edl->set_path(path); strcpy(proxy_edl->local_session->clip_title, path); strcpy(proxy_edl->local_session->clip_notes, _("Proxy clip")); proxy_edl->session->video_tracks = proxy_asset->layers; @@ -1702,18 +1702,17 @@ EDL *AWindowGUI::collect_proxy(Indexable *indexable) } -void AWindowGUI::collect_assets(int proxy) +void AWindowGUI::collect_assets() { mwindow->session->drag_assets->remove_all(); mwindow->session->drag_clips->remove_all(); - mwindow->session->clear_drag_proxy(); int i = 0; AssetPicon *result; while( (result = (AssetPicon*)asset_list->get_selection(0, i++)) != 0 ) { - Indexable *indexable = result->indexable; EDL *drag_edl; - if( proxy && (drag_edl=collect_proxy(indexable)) ) { - mwindow->session->drag_clips->append(drag_edl); - mwindow->session->drag_proxy->append(drag_edl); - continue; + Indexable *indexable = result->indexable; + if( indexable && indexable->is_asset && + indexable->awindow_folder == AW_PROXY_FOLDER ) { + EDL *drag_edl = collect_proxy(indexable); + if( drag_edl ) mwindow->session->drag_clips->append(drag_edl); } if( indexable ) { mwindow->session->drag_assets->append(indexable); @@ -1732,19 +1731,24 @@ void AWindowGUI::copy_picons(ArrayList *dst, // Remove current pointers dst[0].remove_all(); dst[1].remove_all_objects(); + BinFolder *bin_folder = folder < AWINDOW_USER_FOLDERS ? 0 : + mwindow->edl->get_folder(folder); // Create new pointers for( int i = 0; i < src->total; i++ ) { int visible = folder < 0 ? 1 : 0; AssetPicon *picon = (AssetPicon*)src->values[i]; picon->sort_key = -1; - if( !visible && folder >= AWINDOW_USER_FOLDERS && picon->indexable ) { - picon->sort_key = mwindow->edl->folders.matches_indexable(folder, picon->indexable); - if( picon->sort_key >= 0 ) visible = 1; + if( !visible && bin_folder ) { + Indexable *idxbl = bin_folder->is_clips ? picon->edl : picon->indexable; + if( idxbl ) { + picon->sort_key = mwindow->edl->folders.matches_indexable(folder, idxbl); + if( picon->sort_key >= 0 ) visible = 1; + } } if( !visible && picon->indexable && picon->indexable->awindow_folder == folder ) visible = 1; - if( !visible && picon->edl && picon->edl->awindow_folder == folder ) + if( !visible && picon->edl && picon->edl->local_session->folder == folder ) visible = 1; if( visible ) { const char *text = search_text->get_text(); @@ -2067,10 +2071,12 @@ int AWindowFolders::drag_stop() AssetPicon *picon = (AssetPicon *)(item_no < 0 ? 0 : gui->folders[item_no]); if( picon && picon->foldernum >= AWINDOW_USER_FOLDERS ) { BinFolder *folder = mwindow->edl->get_folder(picon->foldernum); - ArrayList *drags = mwindow->session->drag_assets; - if( folder && drags ) folder->add_patterns(drags); + ArrayList *drags = folder->is_clips ? + ((ArrayList *)mwindow->session->drag_clips) : + ((ArrayList *)mwindow->session->drag_assets); + if( folder && drags && !folder->add_patterns(drags) ) + flicker(1,30); mwindow->session->current_operation = ::NO_OPERATION; - flicker(1,30); result = 1; } } @@ -2244,7 +2250,7 @@ void AWindowAssets::draw_background() int AWindowAssets::drag_start_event() { int collect_pluginservers = 0; - int collect_assets = 0, proxy = 0; + int collect_assets = 0; if( BC_ListBox::drag_start_event() ) { switch( mwindow->edl->session->awindow_folder ) { @@ -2267,9 +2273,6 @@ int AWindowAssets::drag_start_event() case AW_LABEL_FOLDER: // do nothing! break; - case AW_PROXY_FOLDER: - proxy = 1; - // fall thru case AW_MEDIA_FOLDER: default: mwindow->session->current_operation = DRAG_ASSET; @@ -2290,7 +2293,7 @@ int AWindowAssets::drag_start_event() } if( collect_assets ) { - gui->collect_assets(proxy); + gui->collect_assets(); } return 1; @@ -2382,7 +2385,6 @@ int AWindowAssets::drag_stop_event() BC_ListBox::drag_stop_event(); // since NO_OPERATION is also defined in listbox, we have to reach for global scope... mwindow->session->current_operation = ::NO_OPERATION; - mwindow->session->clear_drag_proxy(); return 1; }