auto bump fixes, undo tweaks, add drag_speed_highlight, ffmpeg filter setup fixes...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / track.C
index c641778d89a30fe7be3b49bfb72b28fcdd4ec3e9..f97ef3c28e1a82c2b2b3be67e7984fab6014dfb6 100644 (file)
@@ -1790,6 +1790,19 @@ void Track::set_camera(float x, float y, float z)
        set_fauto_xyz(AUTOMATION_CAMERA_X, x, y, z);
 }
 
+int Track::is_hidden()
+{
+       if( master ) return 0;
+       if( edl->session->gang_tracks == GANG_MEDIA ) return 1;
+       if( edl->session->gang_tracks == GANG_CHANNELS ) {
+               for( Track *track=previous; track; track=track->previous ) {
+                       if( track->data_type == data_type ) return 1;
+                       if( track->master ) return 0;
+               }
+       }
+       return 0;
+}
+
 Track *Track::gang_master()
 {
        Track *track = this;
@@ -1802,7 +1815,6 @@ Track *Track::gang_master()
                while( current && !track->master ) {
                        if( !(current = current->previous) ) break;
                        if( current->data_type == data_type ) track = current;
-                       if( track->master ) break;
                }
                break; }
        case GANG_MEDIA: {
@@ -1813,18 +1825,15 @@ Track *Track::gang_master()
        return track;
 }
 
-int Track::is_hidden()
+int Track::in_gang(Track *track)
 {
-       if( master ) return 0;
-       if( edl->session->gang_tracks == GANG_MEDIA ) return 1;
-       if( edl->session->gang_tracks == GANG_CHANNELS ) {
-               for( Track *track=previous; track; track=track->previous ) {
-                       if( track->data_type == data_type ) return 1;
-                       if( track->master ) return 0;
-               }
-       }
-       return 0;
+       if( edl->session->gang_tracks == GANG_NONE ) return ganged;
+       Track *current = this;
+       while( current && !current->master ) current = current->previous;
+       while( track && !track->master ) track = track->previous;
+       return current == track ? 1 : 0;
 }
+
 int Track::is_armed()
 {
        return gang_master()->armed;