68137bd66978c21a5d168b5216f07f03caf34f3c
chmalee
  Fri Oct 10 15:10:09 2025 -0700
Also create the 'x' icons with display:none so mouseover/mouseleave and track drag work correctly, refs #34420

diff --git src/hg/hgTracks/imageV2.c src/hg/hgTracks/imageV2.c
index 25dbf9b6fcd..f71933dd1d9 100644
--- src/hg/hgTracks/imageV2.c
+++ src/hg/hgTracks/imageV2.c
@@ -1909,34 +1909,34 @@
             }
 
         // make quickLifted tracks have a green left button
         struct trackDb *tdb = imgTrack->tdb;
         struct trackHub *tHub = NULL;
         char *grpName = NULL;
         if (tdb != NULL)
             grpName = tdb->grp;
         if (grpName != NULL)
             tHub = grabHashedHub(grpName);
         char *btnType = "btn";
         if ((tHub != NULL) && startsWith("Quicklift", tHub->longLabel))
             btnType = "btnGreen";
         hPrintf(" width:9px; display:none;' class='%s %sbtn btnN %s'>",
                 trackName,(slice->link == NULL ? "inset " : ""), btnType);
-        // insert the gear spans with display: hide
+        // insert the gear spans with display: none
         if (cfgOptionBooleanDefault("greyBarIcons", FALSE))
             {
-            hPrintf("<span title='Configure track' id='gear_%s' class='hgTracksGearIcon ui-icon ui-icon-gear' style='display: hide;'></span>", name);
+            hPrintf("<span title='Configure track' id='gear_%s' class='hgTracksGearIcon ui-icon ui-icon-gear' style='display: none;'></span>", name);
             }
         hPrintf("</p>");
         }
     else
         hPrintf("width:%dpx;'></p>",slice->width);
     }
 }
 
 // FF does not support newline code and '...' looks bad without newlines
 #define NEWLINE_ENCODED " &#x0A;"
 #define NEWLINE_NOT_SUPPORTED " - "
 #define NEWLINE_TO_USE(browser) ((browser) == btFF ? NEWLINE_NOT_SUPPORTED : NEWLINE_ENCODED)
 #define ELLIPSIS_TO_USE(browser) ((browser) == btFF ? "" : "...")
 
 static void sliceAndMapDraw(struct imgBox *imgBox,struct imgTrack *imgTrack,
@@ -2150,56 +2150,60 @@
     if (imgBox->showSideLabel && imgBox->plusStrand)
         {
         // button
         safef(name, sizeof(name), "btn_%s", trackName);
         hPrintf(" <TD id='td_%s'%s>\n",name,(imgTrack->reorderable ? " class='dragHandle'" : ""));
         sliceAndMapDraw(imgBox,imgTrack,stButton,name,FALSE, jsonTdbVars);
         hPrintf("</TD>\n");
         // leftLabel
         safef(name,sizeof(name),"side_%s",trackName);
         if (imgTrack->reorderable)
             hPrintf(" <TD id='td_%s' class='dragHandle tdLeft' title='%s%sdrag to reorder'>\n",
                     name,attributeEncode(imgTrack->tdb->longLabel),newLine);
         else
             hPrintf(" <TD id='td_%s' class='tdLeft'>\n",name);
         sliceAndMapDraw(imgBox,imgTrack,stSide,name,FALSE, jsonTdbVars);
+        if (cfgOptionBooleanDefault("greyBarIcons", FALSE))
+            hPrintf("<span id='close_btn_%s' title='Hide track' class='hgTracksCloseIcon ui-icon ui-icon-close' style='display: none'></span>", trackName);
         hPrintf("</TD>\n");
         }
 
     // Main/Data image region
     hPrintf(" <TD id='td_data_%s' title='click & drag to scroll; shift+click & drag to zoom'"
             " width=%d class='tdData'>\n", trackName, imgBox->width);
     // centerLabel
     if (imgTrack->hasCenterLabel)
         {
         safef(name, sizeof(name), "center_%s", trackName);
         sliceAndMapDraw(imgBox,imgTrack,stCenter,name,TRUE, jsonTdbVars);
         hPrintf("\n");
         }
     // data image
     safef(name, sizeof(name), "data_%s", trackName);
     sliceAndMapDraw(imgBox,imgTrack,stData,name,(imgTrack->order>0), jsonTdbVars);
     hPrintf("</TD>\n");
 
     if (imgBox->showSideLabel && !imgTrack->plusStrand)
         {
         // rightLabel
         safef(name, sizeof(name), "side_%s", trackName);
         if (imgTrack->reorderable)
             hPrintf(" <TD id='td_%s' class='dragHandle tdRight' title='%s%sdrag to reorder'>\n",
                     name,attributeEncode(imgTrack->tdb->longLabel),newLine);
         else
             hPrintf(" <TD id='td_%s' class='tdRight'>\n",name);
         sliceAndMapDraw(imgBox,imgTrack,stSide,name,FALSE, jsonTdbVars);
+        if (cfgOptionBooleanDefault("greyBarIcons", FALSE))
+            hPrintf("<span id='close_btn_%s' title='Hide track' class='hgTracksCloseIcon ui-icon ui-icon-close' style='display: none'></span>", trackName);
         hPrintf("</TD>\n");
         // button
         safef(name, sizeof(name), "btn_%s", trackName);
         hPrintf(" <TD id='td_%s'%s>\n",name,(imgTrack->reorderable ? " class='dragHandle'" : ""));
         sliceAndMapDraw(imgBox,imgTrack,stButton, name,FALSE, jsonTdbVars);
         hPrintf("</TD>\n");
         }
     hPrintf("</TR>\n");
     }
 hPrintf("</TABLE>\n");
 hPrintf("<!-- - - - - - - - ^^^ IMAGEv2 ^^^ - - - - - - - -->\n");
 jsonTdbSettingsUse(jsonTdbVars);
 }