DAR ffmpeg encode fix, x264/x265 upgrade, match output size, ffmpeg view preloads
[goodguy/history.git] / cinelerra-5.1 / cinelerra / awindowgui.C
index 1dcacb945b982f20bbebddc650ab9111d08d2242..89080802a7868c054ff3ca4da49cbd74d7de3783 100644 (file)
@@ -1143,6 +1143,30 @@ void AWindowGUI::update_asset_list()
 //printf("AWindowGUI::update_asset_list 7 %d\n", assets.total);
 }
 
+void AWindowGUI::update_picon(Indexable *indexable)
+{
+//printf("AWindowGUI::update_asset_list 1\n");
+       VIcon *vicon = 0;
+       for(int i = 0; i < assets.total; i++) {
+               AssetPicon *picon = (AssetPicon*)assets.values[i];
+               if( picon->indexable == indexable ||
+                   picon->edl == (EDL *)indexable ) {
+                       char name[BCTEXTLEN];
+                       FileSystem fs;
+                       fs.extract_name(name, indexable->path);
+                       picon->set_text(name);
+                       vicon = picon->vicon;
+                       break;
+               }
+       }
+       if( vicon ) {
+               stop_vicon_drawing();
+               vicon->clear_images();
+               vicon->reset(indexable->get_frame_rate());
+               start_vicon_drawing();
+       }
+}
+
 void AWindowGUI::sort_assets()
 {
 //printf("AWindowGUI::sort_assets 1 %s\n", mwindow->edl->session->current_folder);
@@ -1734,12 +1758,17 @@ int AWindowAssets::drag_stop_event()
 
        if(!result)
        {
-               for(int i = 0; i < mwindow->vwindows.size(); i++)
+               for(int i = 0; !result && i < mwindow->vwindows.size(); i++)
                {
                        VWindow *vwindow = mwindow->vwindows.get(i);
+                       if( !vwindow ) continue;
                        if( !vwindow->is_running() ) continue;
+                       if( vwindow->gui->is_hidden() ) continue;
                        vwindow->gui->lock_window("AWindowAssets::drag_stop_event");
-                       result = vwindow->gui->drag_stop();
+                       if( vwindow->gui->cursor_above() &&
+                           vwindow->gui->get_cursor_over_window() ) {
+                               result = vwindow->gui->drag_stop();
+                       }
                        vwindow->gui->unlock_window();
                }
        }