4988e1f90ac3398d5e228209c5646f21b72846b1
tdreszer
  Fri Sep 10 08:51:35 2010 -0700
Added tdbLimitedByAncestry() and used it to fix 2 vis problems: cfg popup and findTracks initial vis
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index c5b19ad..c5e8b57 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -6710,6 +6710,28 @@
     return b;
 }
 
+enum trackVisibility tdbVisLimitedByAncestry(struct cart *cart, struct trackDb *tdb, enum trackVisibility vis, boolean noSupers)
+// returns visibility limited by ancestry (or subtrack vis override)
+{
+char *cartVis = cartOptionalString(cart, tdb->track);
+if (cartVis != NULL)
+    {
+    if (tdbIsCompositeChild(tdb))
+        return hTvFromString(cartVis); // subtrackVis override
+    vis = tvMin(vis, hTvFromString(cartVis) );
+    }
+else
+    vis = tvMin(vis, tdb->visibility );
+
+if (vis == tvHide || tdb->parent == NULL)
+    return vis;
+
+if (noSupers && tdbIsSuperTrack(tdb->parent))
+    return vis;
+
+return tdbVisLimitedByAncestry(cart,tdb->parent,vis,noSupers);
+}
+
 char *compositeViewControlNameFromTdb(struct trackDb *tdb)
 /* Returns a string with the composite view control name if one exists */
 {