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 " 
" #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); }