5ed8f560efb5af18673ae76180e24ec493698cb2 galt Thu Nov 20 17:07:25 2025 -0800 Fixes pdf output problem. We set hgFindMatches = NULL for pdf output to suppress the item search highlight. But loading in bigBedTrack and squishPackyMode both depend on that search term, so we cannot just set it to NULL. A copy of it called origHgFindMatches exists and is available to those routines that need the original search value. diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 5ffcd01769c..75e9196ab56 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -4823,30 +4823,31 @@ for (i=1; i<ct; i++) { hashStore(nonEmptySubtracksHash, cloneString(words[i])); } } } lineFileClose(&lf); return nonEmptySubtracksHash; } static void expandSquishyPackTracks(struct track *trackList) /* Step through track list and duplicated tracks with squishyPackPoint defined */ { if (windows->next) // don't go into squishyPack mode if in multi-exon mode. return; + struct track *nextTrack = NULL, *track; for (track = trackList; track != NULL; track = nextTrack) { nextTrack = track->next; if ((track->visibility != tvPack) || checkIfWiggling(cart, track)) continue; char *string = cartOrTdbString(cart, track->tdb, "squishyPackPoint", NULL); if (string != NULL) { double squishyPackPoint = atof(string); /* clone the track */ char buffer[strlen(track->track) + strlen("Squinked") + 1]; @@ -4859,31 +4860,31 @@ squishTrack->tdb->next = NULL; squishTrack->visibility = tvSquish; squishTrack->limitedVis = tvSquish; hashAdd(trackHash, squishTrack->tdb->track, squishTrack); struct linkedFeatures *lf = track->items; /* distribute the items based on squishyPackPoint */ track->items = NULL; squishTrack->items = NULL; struct linkedFeatures *nextLf; for(; lf; lf = nextLf) { nextLf = lf->next; // if this is a hgFind match, it always is in pack, not squish - if ((hgFindMatches != NULL) && hashLookup(hgFindMatches, lf->name)) + if ((origHgFindMatches != NULL) && hashLookup(origHgFindMatches, lf->name)) slAddHead(&track->items, lf); else if (lf->squishyPackVal > squishyPackPoint) slAddHead(&squishTrack->items, lf); else slAddHead(&track->items, lf); } // if the squish track has no items, don't bother including it if (slCount(squishTrack->items) == 0) continue; slReverse(&track->items); slReverse(&squishTrack->items); squishTrack->track = cloneString(buffer); @@ -8711,30 +8712,31 @@ char *freezeName = NULL; boolean hideAll = cgiVarExists("hgt.hideAll"); boolean hideTracks = cgiOptionalString( "hideTracks") != NULL; boolean defaultTracks = cgiVarExists("hgt.reset"); boolean showedRuler = FALSE; boolean showTrackControls = cartUsualBoolean(cart, "trackControlsOnMain", TRUE); boolean multiRegionButtonTop = cfgOptionBooleanDefault(MULTI_REGION_CFG_BUTTON_TOP, TRUE); long thisTime = 0, lastTime = 0; basesPerPixel = ((float)virtWinBaseCount) / ((float)fullInsideWidth); zoomedToBaseLevel = (virtWinBaseCount <= fullInsideWidth / tl.mWidth); zoomedToCodonLevel = (ceil(virtWinBaseCount/3) * tl.mWidth) <= fullInsideWidth; zoomedToCodonNumberLevel = (ceil(virtWinBaseCount/3) * tl.mWidth * 5) <= fullInsideWidth; zoomedToCdsColorLevel = (virtWinBaseCount <= fullInsideWidth*3); + if (psOutput != NULL) { hPrintDisable(); hideControls = TRUE; withNextItemArrows = FALSE; withNextExonArrows = FALSE; hgFindMatches = NULL; } /* Tell browser where to go when they click on image. */ hPrintf("<FORM ACTION=\"%s\" NAME=\"TrackHeaderForm\" id=\"TrackHeaderForm\" METHOD=\"GET\">\n\n", hgTracksName()); jsonObjectAdd(jsonForClient, "insideX", newJsonNumber(insideX)); jsonObjectAdd(jsonForClient, "revCmplDisp", newJsonBoolean(revCmplDisp)); if (hPrintStatus()) cartSaveSession(cart);