c3bb4207fb2a58064b937ba9fef1cc11852f7576 hiram Wed Mar 25 10:48:49 2026 -0700 allow trackDb entry to override the in-code defaults of the gcOnFly track refs #35958 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index bf26fd7d894..5b07c063d0f 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -7433,43 +7433,53 @@ * Best to load custom last. */ // load the track list and check to see if we need to rewrite the cart int cartVersionFromTrackDb = loadFromTrackDb(&trackList); int cartVersionFromCart = cartGetVersion(cart); if (cartVersionFromTrackDb > cartVersionFromCart) cartRewrite(cart, cartVersionFromTrackDb, cartVersionFromCart); if (measureTiming) measureTime("Time after trackDbLoad "); if (pcrResultParseCart(database, cart, NULL, NULL, NULL)) slSafeAddHead(&trackList, pcrResultTg()); if (userSeqString != NULL) slSafeAddHead(&trackList, userPslTg()); slSafeAddHead(&trackList, oligoMatchTg()); -if (cfgOptionBooleanDefault("gcOnTheFly", FALSE)) +/* gcOnFly track: prefer trackDb entry if present, otherwise + * build synthetically when gcOnTheFly config is enabled. */ +{ +struct track *gcTg = rFindTrackWithTable(GC_ON_FLY_TRACK_NAME, trackList); +if (gcTg != NULL) + { + /* trackDb entry exists - patch in on-the-fly methods */ + gc5BaseOnTheFlyMethods(gcTg, cart); + } +else if (cfgOptionBooleanDefault("gcOnTheFly", FALSE)) { if (cfgOptionBooleanDefault("gcOnTheFlyCoExist", FALSE)) { slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart)); } else { if (rFindTrackWithTable("gc5Base", trackList) == NULL && rFindTrackWithTable("gc5BaseBw", trackList) == NULL) slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart)); } } +} if (restrictionEnzymesOk()) { slSafeAddHead(&trackList, cuttersTg()); } if (wikiTrackEnabled(database, NULL)) { addWikiTrack(&trackList); struct sqlConnection *conn = wikiConnect(); if (sqlTableExists(conn, "variome")) addVariomeWikiTrack(&trackList); wikiDisconnect(&conn); } struct grp *grpList = NULL;