6c0552193a83587fccb506d9d687e57b754d44b2
braney
  Wed Feb 21 13:20:40 2018 -0800
be more exact about what tracks are in the visible tracks folder.

diff --git src/hg/hgCollection/hgCollection.c src/hg/hgCollection/hgCollection.c
index 19e4760..69f9167 100644
--- src/hg/hgCollection/hgCollection.c
+++ src/hg/hgCollection/hgCollection.c
@@ -238,31 +238,43 @@
 
 
 static void checkForVisible(struct cart *cart, struct trackDbRef **list, struct trackDb *tdb)
 /* Walk the trackDb hierarchy looking for visible leaf tracks. */
 {
 struct trackDb *subTdb;
 char buffer[4096];
 
 if (tdb->subtracks)
     {
     for(subTdb = tdb->subtracks; subTdb; subTdb = subTdb->next)
         checkForVisible(cart, list, subTdb);
     }
 else
     {
-    if (isParentVisible(cart, tdb) &&  isSubtrackVisible(cart, tdb))
+    boolean isVisible = FALSE;
+    if (tdb->parent == NULL) 
+        {
+        char *cartVis = cartOptionalString(cart, tdb->track);
+        if (cartVis == NULL)
+            isVisible =  tdb->visibility != tvHide;
+        else
+            isVisible =  differentString(cartVis, "hide");
+        }
+    else if (isParentVisible(cart, tdb) &&  isSubtrackVisible(cart, tdb))
+        isVisible = TRUE;
+
+    if (isVisible)
         {
         struct trackDbRef *tdbRef;
         AllocVar(tdbRef);
         tdbRef->tdb = tdb;
         slAddHead(list, tdbRef);
         safef(buffer, sizeof buffer, "%s_imgOrd", tdb->track);
 
         tdbRef->order = cartUsualInt(cart, buffer, 0);
         }
     }
 }
 
 static int tdbRefCompare (const void *va, const void *vb)
 // Compare to sort on imgTrack->order.
 {