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)