24bf5755a6ce449f5a452cad60991606da662111
kent
  Fri Jan 7 18:16:02 2011 -0800
Fixing redmine issue #2151 where multiWig tracks had to be visibility full in trackDb.ra to _ever_ be seen properly.
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 7399cf8..996d430 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -9191,68 +9191,83 @@
 struct track *subtrack;
 int ct = 0;
 for (subtrack = trackList; subtrack; subtrack = subtrack->next)
     if (isSubtrackVisible(subtrack))
         ct++;
 return ct;
 }
 
 enum trackVisibility limitVisibility(struct track *tg)
 /* Return default visibility limited by number of items and
  * by parent visibility if part of a coposite track.
  * This also sets tg->height. */
 {
 if (!tg->limitedVisSet)
     {
+    if (sameString(tg->track, "jkDnaseRep1a")) uglyf("Got you %s with %d subtracks. Ajax %d<BR>\n", tg->track, slCount(tg->subtracks), trackShouldUseAjaxRetrieval(tg));
+    if (sameString(tg->track, "jkDnaseAll")) uglyf("Got you %s with %d subtracks. Ajax %d<BR>\n", tg->track, slCount(tg->subtracks), trackShouldUseAjaxRetrieval(tg));
     tg->limitedVisSet = TRUE;
     if (trackShouldUseAjaxRetrieval(tg))
         {
         tg->limitedVis = tg->visibility;
         tg->height = REMOTE_TRACK_HEIGHT;
         }
     else
         {
         enum trackVisibility vis = tg->visibility;
         int h;
         int maxHeight = maximumTrackHeight(tg);
 
         if (vis == tvHide)
             {
             tg->height = 0;
             tg->limitedVis = tvHide;
             return tvHide;
             }
         if (tg->subtracks != NULL)
             {
             struct track *subtrack;
             int subCnt = subtrackCount(tg->subtracks);
             maxHeight = maxHeight * max(subCnt,1);
+	    if (!tg->syncChildVisToSelf)
+		{
             for (subtrack = tg->subtracks;  subtrack != NULL; subtrack = subtrack->next)
                 limitVisibility(subtrack);
             }
+            }
         while((h = tg->totalHeight(tg, vis)) > maxHeight && vis != tvDense)
             {
             if (vis == tvFull && tg->canPack)
                 vis = tvPack;
             else if (vis == tvPack)
                 vis = tvSquish;
             else
                 vis = tvDense;
             }
         tg->height = h;
         tg->limitedVis = vis;
         }
+    if (tg->syncChildVisToSelf)
+        {
+	struct track *subtrack;
+	for (subtrack = tg->subtracks;  subtrack != NULL; subtrack = subtrack->next)
+	    {
+	    subtrack->visibility = tg->visibility;
+	    subtrack->limitedVis = tg->limitedVis;
+	    subtrack->limitedVisSet = tg->limitedVisSet;
+	    }
+	}
     }
 return tg->limitedVis;
 }
 
 void compositeTrackVis(struct track *track)
 /* set visibilities of subtracks */
 {
 struct track *subtrack;
 
 if (track->visibility == tvHide)
     return;
 
 /* Count visible subtracks. */
 for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next)
     if (!subtrack->limitedVisSet)