ad9d7082c4e74d57f07a8bf5170fead4aad8a81f braney Fri Jan 6 11:16:53 2017 -0800 fix a problem with visibility of composites #18544 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 434be29..12711d2 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -6544,62 +6544,72 @@ if (cartOptionalString(cart, "hgt.trackNameFilter") == NULL) { // If a single track was asked for and it is from a hub, then it is already in trackList loadTrackHubs(&trackList, &grpList); } loadCustomTracks(&trackList); groupTracks( &trackList, pGroupList, grpList, vis); setSearchedTrackToPackOrFull(trackList); if (cgiOptionalString( "hideTracks")) changeTrackVis(groupList, NULL, tvHide); /* Get visibility values if any from ui. */ for (track = trackList; track != NULL; track = track->next) { char *s = cartOptionalString(cart, track->track); if (startsWith("hub_", track->track) && (s == NULL)) + { s = cartOptionalString(cart, trackHubSkipHubName(track->track)); + // if we got a generic visibility setting that applies to a hub, + // go ahead and set the hub specific visibility for future cart + // accesses + if (s != NULL) + cartSetString(cart, track->track, s); + } if (cgiOptionalString("hideTracks")) { if (tdbIsSuperTrackChild(track->tdb)) { s = cgiOptionalString(track->tdb->parent->track); if (s) { cartSetString(cart, track->tdb->parent->track, s); track->tdb->parent->visibility = hTvFromString(s) ; } } s = cgiOptionalString(track->track); if (s != NULL) { if (hTvFromString(s) == track->tdb->visibility) cartRemove(cart, track->track); else cartSetString(cart, track->track, s); } } if (s != NULL && !track->limitedVisSet) track->visibility = hTvFromString(s); if (tdbIsCompositeChild(track->tdb)) track->visibility = tdbVisLimitedByAncestry(cart, track->tdb, FALSE); else if (tdbIsComposite(track->tdb) && track->visibility != tvHide) { struct trackDb *parent = track->tdb->parent; char *parentShow = NULL; if (parent) + { + fprintf(stderr,"checking composite %s\n", parent->track); parentShow = cartUsualString(cart, parent->track, parent->isShow ? "show" : "hide"); + } if (!parent || sameString(parentShow, "show")) compositeTrackVis(track); } } return trackList; } char *collapseGroupVar(char *name) /* Construct cart variable name for collapsing group */ { static char varName[256]; safef(varName, sizeof(varName), "%s%s_%s_%s", "hgt", "group", name, "close"); return (cloneString(varName)); }