bc48a95c9c4d61224cb8b46b556834a3ea7e08ff
braney
  Mon May 18 16:09:18 2015 -0700
if hideTracks is on the command line, set the visibilities of the other
tracks based on URL even if they are the default visibilities in
trackDb refs #15299

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 2277e7f..5674e52 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -3910,32 +3910,35 @@
     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 (cgiOptionalString("hideTracks"))
 	{
 	s = cgiOptionalString(track->track);
-	if (s != NULL && (hTvFromString(s) != track->tdb->visibility))
+	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)
 	    parentShow = cartUsualString(cart, parent->track,
 			 parent->isShow ? "show" : "hide");
 	if (!parent || sameString(parentShow, "show"))