c32d6e08d19a0b8ad7ece12aab39d0ba0be7a9e1
chmalee
  Mon Dec 1 16:26:27 2025 -0800
hgTracks tooltips use the data-tooltip attribute on the area element if present, falling back to the title attribute. Makes title attributes for (hopefully all) tracks with special tooltips put the tooltip string into the data-tooltip attribute instead of the title attribute, refs #35756

diff --git src/hg/hgTracks/expRatioTracks.c src/hg/hgTracks/expRatioTracks.c
index 30e5baeeee1..3c728e6b232 100644
--- src/hg/hgTracks/expRatioTracks.c
+++ src/hg/hgTracks/expRatioTracks.c
@@ -179,31 +179,31 @@
 {
 char *encodedItem1 = cgiEncode(item1);
 char *encodedItem2 = cgiEncode(item2);
 x = hvGfxAdjXW(hvg, x, width);
 if (theImgBox && curImgTrack)
     {
     char link[512];
     // NOTE: winStart,winEnd removed due to portal (added back by Galt for multi-region)
     safef(link,sizeof(link),"%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s&i=%s&i2=%s", 
         hgcNameAndSettings(), chromName, winStart, winEnd, start, end, track, encodedItem1, encodedItem2);
     #ifdef IMAGEv2_SHORT_MAPITEMS
     if (x < insideX && x+width > insideX)
         warn("mapBoxHcTwoItems(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d  link:[%s]",
              track,x, y, x+width, y+height, link);
     #endif//def IMAGEv2_SHORT_MAPITEMS
-    imgTrackAddMapItem(curImgTrack,link,statusLine,x, y, x+width, y+height, track);
+    imgTrackAddMapItem(curImgTrack,link,statusLine,x, y, x+width, y+height, track, NULL);
     }
 else
     {
     hPrintf("<AREA SHAPE=RECT COORDS=\"%d,%d,%d,%d\" ", x, y, x+width, y+height);
     hPrintf("HREF=\"%s&o=%d&t=%d&g=%s&i=%s&i2=%s&c=%s&l=%d&r=%d&db=%s&pix=%d\" ",
             hgcNameAndSettings(), start, end, track, encodedItem1, encodedItem2,chromName,
             winStart, winEnd, database, tl.picWidth);
     hPrintf("TITLE=\"%s\">\n", statusLine);
     }
 freeMem(encodedItem1);
 freeMem(encodedItem2);
 }
 
 int affyUclaNormIndexForName(char *string)
 /* Return the index in sorting as provided by Allen Day at UCLA. */
@@ -1432,31 +1432,31 @@
     int xOffRc = hvGfxAdjXW(hvg, xOff, insideWidth);
     if (theImgBox && curImgTrack)
         {
         char link[512];
 #if defined(IMAGEv2_DRAG_SCROLL_SZ) && (IMAGEv2_DRAG_SCROLL_SZ > 1)
         // Tim isn't sure what to do here if/when we implement drag scroll.
         warn("Tim take a look at this link and whether it needs different winStart and winEnd values with dragScroll > 1.");
 #endif
 	// Galt added back winStart, winEnd for multi-region.
         safef(link,sizeof(link),"%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s&i=zoomInMore", hgcNameAndSettings(), chromName, winStart, winEnd, seqStart, seqEnd, tg->track);
         #ifdef IMAGEv2_SHORT_MAPITEMS
         if (xOffRc < insideX && xOffRc+insideWidth > insideX)
             warn("expRatioMapBoxes(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d "
                  "link:[%s]",tg->track,xOffRc, y, xOffRc+insideWidth, y+totalHeight, link);
         #endif//def IMAGEv2_SHORT_MAPITEMS
-        imgTrackAddMapItem(curImgTrack,link,"zoomInMore",xOffRc, y, xOffRc+insideWidth, y+totalHeight, tg->track);
+        imgTrackAddMapItem(curImgTrack,link,"zoomInMore",xOffRc, y, xOffRc+insideWidth, y+totalHeight, tg->track, NULL);
         }
     else
         {
         hPrintf("<AREA SHAPE=RECT COORDS=\"%d,%d,%d,%d\" ",
                 xOffRc, y, xOffRc+insideWidth, y+totalHeight);
         hPrintf("HREF=\"%s&c=%s&o=%d&t=%d&g=%s&c=%s&l=%d&r=%d&db=%s&i=zoomInMore\" ",
                 hgcNameAndSettings(), chromName, seqStart, seqEnd, tg->track, chromName, winStart, winEnd, database);
         hPrintf("TITLE=\"zoomInMore\">\n");
         }
      }
 else
     {
     struct linkedFeatures *probe;
     for (probe = probes; probe != NULL; probe = probe->next)
 	{