// 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;
}
-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);
// 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();
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<Indexable *> *drags = mwindow->session->drag_assets;
- if( folder && drags ) folder->add_patterns(drags);
+ ArrayList<Indexable *> *drags = folder->is_clips ?
+ ((ArrayList<Indexable *> *)mwindow->session->drag_clips) :
+ ((ArrayList<Indexable *> *)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;
}
}
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 ) {
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;
}
if( collect_assets ) {
- gui->collect_assets(proxy);
+ gui->collect_assets();
}
return 1;
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;
}