a62a60916a2ae4aebf9452d0f005f2ad2213ed94 hiram Mon Apr 6 16:21:57 2026 -0700 remove the gcOnFly track from consideration - do not see it at all anywhere refs #35958 diff --git src/hg/hubApi/apiUtils.c src/hg/hubApi/apiUtils.c index 13b695faf0f..b1a367a48df 100644 --- src/hg/hubApi/apiUtils.c +++ src/hg/hubApi/apiUtils.c @@ -308,40 +308,56 @@ /* Compare to sort based on 'track' name; use shortLabel as secondary sort key. * Note: parallel code to hgTracks.c:tgCmpPriority */ { const struct trackDb *a = *((struct trackDb **)va); const struct trackDb *b = *((struct trackDb **)vb); int dif = strcmp(a->track, b->track); if (dif < 0) return -1; else if (dif == 0.0) return strcasecmp(a->shortLabel, b->shortLabel); else return 1; } struct trackDb *obtainTdb(struct trackHubGenome *genome, char *db) -/* return a full trackDb fiven the hub genome pointer, or ucsc database name */ +/* return a full trackDb given the hub genome pointer, or ucsc database name */ { struct trackDb *tdb = NULL; if (db) tdb = hTrackDb(db); else tdb = trackHubAddTracksGenome(genome); -slSort(tdb, trackDbTrackCmp); -// slSort(&tdb, trackDbCmp); -return tdb; +/* remove the synthetic gcOnFly track it exists only for hgTracks display */ +struct trackDb *filtered = NULL; +struct trackDb *next; +while (tdb) + { + next = tdb->next; + if (sameString(GC_ON_FLY_TRACK_NAME, trackHubSkipHubName(tdb->track))) + { + tdb->next = NULL; + } + else + { + slAddHead(&filtered, tdb); + } + tdb = next; + } +slReverse(&filtered); +slSort(filtered, trackDbTrackCmp); +return filtered; } struct trackDb *findTrackDb(char *track, struct trackDb *tdb) /* search tdb structure for specific track, recursion on subtracks */ { struct trackDb *trackFound = NULL; for (trackFound = tdb; trackFound; trackFound = trackFound->next) { if (trackFound->subtracks) { struct trackDb *subTrack = findTrackDb(track, trackFound->subtracks); if (subTrack) { if (sameOk(trackHubSkipHubName(subTrack->track), track))