f04f1b9af06c823602c5e0ecd3b8c2059d7704d3
jcasper
  Thu Aug 27 14:42:31 2026 -0700
Faceted composites now have a max display mode setting instead of a full override
of child track visibilities, with accompanying support for the onlyVisibility setting.  We also
now include a filter block (applied to appropriate child tracks) when those settings are in place.
refs #37662

diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 871c202ec6d..cbb460ee597 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -11941,30 +11941,36 @@
             enabled = FALSE;
     }
 return enabled;
 }
 
 bool isSubtrackVisible(struct track *subtrack)
 /* Has this subtrack not been deselected in hgTrackUi or declared with
  * "subTrack ... off"?  -- assumes composite track is visible. */
 {
 if (subtrack->subTrackVisSet)
     return subtrack->subTrackVis;
 boolean overrideComposite = (NULL != cartOptionalString(cart, subtrack->track));
 if (subtrack->limitedVisSet && subtrack->limitedVis == tvHide)
     return FALSE;
 bool enabledInTdb = subtrackEnabledInTdb(subtrack);
+// A faceted composite's children keep a display mode of their own, so having one says
+// nothing about whether the facet table selected them - leave that to the checkbox.
+// NOTE: subtrack->tdb can be the composite's tdb, hence getSubtrackTdb() rather than
+// subtrack->tdb->parent.
+if (overrideComposite && tdbIsFacetedComposite(getSubtrackTdb(subtrack)->parent))
+    overrideComposite = FALSE;
 char option[4096];
 safef(option, sizeof(option), "%s_sel", subtrack->track);
 boolean enabled = cartUsualBoolean(cart, option, enabledInTdb);
 if (overrideComposite)
     enabled = TRUE;
 subtrack->subTrackVisSet = TRUE;
 subtrack->subTrackVis = enabled;
 return enabled;
 }
 
 static int subtrackCount(struct track *trackList)
 /* Count the number of visible subtracks in (sub)trackList. */
 {
 struct track *subtrack;
 int ct = 0;
@@ -15581,31 +15587,32 @@
 const struct track *b = *((struct track **)vb);
 
 double diff = a->priority - b->priority;
 if (diff > 0)
     return 1;
 else if (diff < 0)
     return -1;
 return 0;
 }
 
 
 static bool isSubtrackVisibleTdb(struct cart *cart, struct trackDb *tdb)
 /* Has this subtrack not been deselected in hgTrackUi or declared with
  *  * "subTrack ... off"?  -- assumes composite track is visible. */
 {
-boolean overrideComposite = (NULL != cartOptionalString(cart, tdb->track));
+boolean overrideComposite = (NULL != cartOptionalString(cart, tdb->track))
+                            && !tdbIsFacetedComposite(tdb->parent);
 bool enabledInTdb = TRUE; // assume that this track is enabled in tdb
 char option[1024];
 safef(option, sizeof(option), "%s_sel", tdb->track);
 boolean enabled = cartUsualBoolean(cart, option, enabledInTdb);
 if (overrideComposite)
     enabled = TRUE;
 return enabled;
 }
 
 void buildMathWig(struct trackDb *tdb)
 /* Turn a mathWig composite into a mathWig track. */
 {
 char *aggregateFunc = cartOrTdbString(cart, tdb, "aggregate" , FALSE);
 
 if ((aggregateFunc == NULL) || !(sameString("add", aggregateFunc) || sameString("subtract", aggregateFunc)))