51d89ce7eda1b4b3a8669379230be74ec76e8150
kate
  Mon Oct 7 15:00:54 2019 -0700
Fixes and flexibility for other track types, new filtering. refs #23365

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 74bb8a8..f1edce5 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -5051,47 +5051,57 @@
 if (wordCount == 1)
     return TRUE;
 if (wordCount != 3)
     {
     warn("Track %s %s setting invalid: %s", tdb->track, SUBTRACK_HIDE_EMPTY, orig);
     return FALSE;
     }
 // multi-bed specified (to speed display)
 if (retMultiBedFile)
     *retMultiBedFile = cloneString(hReplaceGbdb(words[1]));
 if (retSubtrackIdFile)
     *retSubtrackIdFile = cloneString(hReplaceGbdb(words[2]));
 return TRUE;
 }
 
-boolean compositeHideEmptySubtracks(struct cart *cart, struct trackDb *childTdb,
-                                        char **retMutiBedFile, char **retSubtrackIdFile)
+boolean compositeHideEmptySubtracks(struct cart *cart, struct trackDb *tdb,
+                                        char **retMultiBedFile, char **retSubtrackIdFile)
 /* Parse hideEmptySubtracks setting and check cart
  * Return TRUE if we should hide empties
  */
 {
-struct trackDb *tdb = tdbGetComposite(childTdb);
-if (!parentTdb)
-    return FALSE;
 boolean deflt = FALSE;
-if (!compositeHideEmptySubtracksSetting(tdb, &deflt, retMutiBedFile, retSubtrackIdFile))
+if (!compositeHideEmptySubtracksSetting(tdb, &deflt, retMultiBedFile, retSubtrackIdFile))
     return FALSE;
 char buf[128];
 safef(buf, sizeof buf, "%s.%s", tdb->track, SUBTRACK_HIDE_EMPTY);
 return cartUsualBoolean(cart, buf, deflt);
 }
 
+boolean compositeChildHideEmptySubtracks(struct cart *cart, struct trackDb *childTdb,
+                                        char **retMultiBedFile, char **retSubtrackIdFile)
+/* Parse hideEmptySubtracks setting and check cart
+ * Return TRUE if we should hide empties
+ */
+{
+struct trackDb *tdb = tdbGetComposite(childTdb);
+if (!tdb)
+    return FALSE;
+return compositeHideEmptySubtracks(cart, tdb, retMultiBedFile, retSubtrackIdFile);
+
+}
+
 static void compositeUiSubtracks(char *db, struct cart *cart, struct trackDb *parentTdb)
 // Display list of subtracks and descriptions with checkboxes to control visibility and
 // possibly other nice things including links to schema and metadata and a release date.
 {
 char buffer[SMALLBUF];
 struct trackDb *subtrack;
 
 // Get list of leaf subtracks to work with
 struct slRef *subtrackRef, *subtrackRefList = trackDbListGetRefsToDescendantLeaves(parentTdb->subtracks);
 
 membersForAll_t* membersForAll = membersForAllSubGroupsGet(parentTdb,NULL);
 sortOrder_t* sortOrder = sortOrderGet(cart, parentTdb);
 char *displaySubs = NULL;
 int subCount = slCount(subtrackRefList);
 if (subCount > LARGE_COMPOSITE_CUTOFF && membersForAll->dimensions != NULL)