switch move/swap tracks, add mv trk shortcut, update msg
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / tracks.C
index 101e7cdb8dbd9e274df7336381164901d9b8795b..07524f1f342ccb296a1b32dfb9eda4b6e6b7071d 100644 (file)
@@ -126,6 +126,20 @@ void Tracks::get_selected_edits(ArrayList<Edit*> *drag_edits)
        }
 }
 
+void Tracks::select_edits(double start, double end)
+{
+       for( Track *track=first; track; track=track->next ) {
+               if( !track->is_armed() ) continue;
+               int64_t start_pos = track->to_units(start, 0);
+               int64_t end_pos = track->to_units(end, 0);
+               for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+                       if( start_pos >= edit->startproject+edit->length ) continue;
+                       if( edit->startproject >= end_pos ) continue;
+                       edit->is_selected = 1;
+               }
+       }
+}
+
 void Tracks::get_automation_extents(float *min,
        float *max,
        double start,
@@ -322,8 +336,7 @@ int Tracks::delete_track(Track *track, int gang)
                gang = edl->session->gang_tracks != GANG_NONE ? 1 : 0;
        Track *nxt = track->next;
        if( gang ) {
-               while( track && !track->master && track->previous )
-                       track = track->previous;
+               track = track->gang_master();
                while( nxt && !nxt->master )
                        nxt = nxt->next;
        }
@@ -769,7 +782,7 @@ Track *Tracks::get(int idx, int data_type)
        return 0;
 }
 
-void Tracks::move_tracks(Track *src, Track *dst, int n)
+void Tracks::roll_tracks(Track *src, Track *dst, int n)
 {
        if( src == dst ) return;
        while( --n >= 0 && src ) {