96bb6d93227444de742fcf885bb700b91bd7dd31 braney Wed Jul 24 13:53:19 2019 -0700 fix problem when setting visibilities of hub-based subtracks with undecorated names (without the hub_) #23872 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 9ba550b..2b5f714 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -6972,43 +6972,49 @@ // first check to see if we've been asked to hide all the subtracks boolean hideKids = FALSE; safef(buffer, sizeof buffer, "%s_hideKids", track->track); s = cartOptionalString(cart, buffer); if (s == NULL && startsWith("hub_", track->track)) s = cartOptionalString(cart, usedThis = trackHubSkipHubName(buffer)); if (s != NULL) hideKids = TRUE; cartRemove(cart, usedThis); // we don't want these _hideKids variables in the cart // now see if we have any specified visibilities struct track *subtrack; for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next) { + boolean undecoratedVis = FALSE; char *s = hideTracks ? cgiOptionalString( subtrack->track) : cartOptionalString(cart, subtrack->track); if (s == NULL && startsWith("hub_", subtrack->track)) + { + undecoratedVis = TRUE; s = hideTracks ? cgiOptionalString(trackHubSkipHubName(subtrack->track)) : cartOptionalString(cart, trackHubSkipHubName(subtrack->track)); + } safef(buffer, sizeof buffer, "%s_sel", subtrack->track); if (s != NULL) { subtrack->visibility = hTvFromString(s); cartSetString(cart, subtrack->track, s); if (sameString("hide", s)) cartSetString(cart, buffer, "0"); else cartSetString(cart, buffer, "1"); + if (undecoratedVis) + cartRemove(cart, trackHubSkipHubName(subtrack->track)); // remove the undecorated version } else if (hideKids && isSubtrackVisible(subtrack)) cartSetString(cart, buffer, "0"); } } } 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");