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);