6ce1087262245e3d2d46198ac237d0d04126e1a3
max
  Tue Sep 21 04:50:49 2021 -0700
removing duplicated font-awesome integration into hgTracks, adding
folder icon as a tag without a font dependency, removing link
from the icon, and adding the icon to the config page, refs #28108

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 34c25de..74c60a8 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -8018,62 +8018,54 @@
     isPressed = TRUE;
 char buf[256];
 safef(buf, sizeof buf, "configure %s multi-region display mode", 
                         isPressed ? "or exit" : "");
 hButtonNoSubmitMaybePressed("hgTracksConfigMultiRegionPage", "multi-region", buf,
             "popUpHgt.hgTracks('multi-region config'); return false;", isPressed);
 }
 
 static void printTrackLink(struct track *track)
 /* print a link hgTrackUi with shortLabel and various icons and mouseOvers */
 {
 if (track->hasUi)
     {
     char *url = trackUrl(track->track, chromName);
     char *longLabel = replaceChars(track->longLabel, "\"", """);
-    // Print an icon before the title when one is defined
-    hPrintPennantIcon(track->tdb);
 
     struct dyString *dsMouseOver = dyStringCreate("%s", longLabel);
     struct trackDb *tdb = track->tdb;
 
     if (tdbIsSuper(tdb))
-        {
-        dyStringPrintf(dsMouseOver, " - this is a container track with %d subtracks of different types (super track)",
-            slCount(tdb->children));
-        }
+        dyStringPrintf(dsMouseOver, " - this is a container track with %d subtracks of different types "
+                "(super track)", slCount(tdb->children));
     else if (tdbIsComposite(tdb))
-        {
-        dyStringPrintf(dsMouseOver, " - this is a container track with %d subtracks of similar types (composite track)",
-            slCount(tdb->subtracks));
-        }
+        dyStringPrintf(dsMouseOver, " - this is a container track with %d subtracks of similar types "
+                "(composite track)", slCount(tdb->subtracks));
+
+    // Print icons before the title when any are defined
+    hPrintIcons(track->tdb);
 
     hPrintf("<A HREF=\"%s\" title=\"%s\">", url, dyStringCannibalize(&dsMouseOver));
 
     freeMem(url);
     freeMem(longLabel);
     }
 
-// show the folder icon from the font-awesome collection.
-// the icon collection also contains a "fa fa-folder-o" icon, which is the outline. It was decided to use only the filled out icon for now.
-if (tdbIsSuper(track->tdb) || tdbIsComposite(track->tdb))
-    hPrintf("<i id='folderIcon' class='fa fa-folder'></i>");
-
 hPrintf("%s", track->shortLabel);
-hPrintf("<BR> ");
 if (track->hasUi)
     hPrintf("</A>");
+hPrintf("<BR>");
 }
 
 void printSearchHelpLink()
 /* print the little search help link next to the go button */
 {
 char *url = cfgOption("searchHelpUrl");
 char *label = cfgOptionDefault("searchHelpLabel", "Search Help");
 if (!url)
     return;
 
 printf("<div id='searchHelp'><a target=_blank title='Documentation on what you can enter into the Genome Browser search box' href='%s'>%s</a></div>", url, label);
 }
 
 void doTrackForm(char *psOutput, struct tempName *ideoTn)
 /* Make the tracks display form with the zoom/scroll buttons and the active
@@ -8742,31 +8734,31 @@
 	    safef(buf, sizeof buf, "%s", windowsSpanPosition());
 	else
 	    safef(buf, sizeof buf, "%s:%ld-%ld", virtChromName, virtWinStart+1, virtWinEnd);
 	
 	position = cloneString(buf);
 
         // position box
         char *pressedClass = "";
         char *showVirtRegions = "";
         if (differentString(virtModeType, "default"))
             {
             pressedClass = "pressed";
             showVirtRegions = "show multi-region position ranges and ";
             }
 	hPrintf("<span class='positionDisplay %s' id='positionDisplay' "
-                "title='click to %s copy position to input box'>%s</span>", 
+                "title='click to %s copy chromosome range to input box'>%s</span>", 
                         pressedClass, showVirtRegions, addCommasToPos(database, position));
 	hPrintf("<input type='hidden' name='position' id='position' value='%s'>\n", buf);
 	sprintLongWithCommas(buf, virtWinEnd - virtWinStart);
 	hPrintf(" <span id='size'>%s</span> bp. ", buf);
 	hPrintf("<input class='positionInput' type='text' name='hgt.positionInput' id='positionInput'"
                         " size='%d'>\n", multiRegionButtonTop ? 50 : 60);
 	hWrites(" ");
 	hButton("goButton", "go");
 
         printSearchHelpLink();
 
 
 	if (!trackHubDatabase(database))
 	    {
             jsonObjectAdd(jsonForClient, "assemblySupportsGeneSuggest", newJsonBoolean(assemblySupportsGeneSuggest(database)));
@@ -10828,32 +10820,30 @@
     if (enableMouseOver)
       webIncludeResourceFile("mouseOver.css");
 
     if (!searching)     // NOT doing search
         {
         webIncludeResourceFile("jquery.contextmenu.css");
         jsIncludeFile("jquery.contextmenu.js", NULL);
         webIncludeResourceFile("ui.dropdownchecklist.css");
         jsIncludeFile("ui.dropdownchecklist.js", NULL);
         jsIncludeFile("ddcl.js", NULL);
         }
 
     hPrintf("<div id='hgTrackUiDialog' style='display: none'></div>\n");
     hPrintf("<div id='hgTracksDialog' style='display: none'></div>\n");
 
-    webIncludeResourceFile("font-awesome.min.css");
-
     cartFlushHubWarnings();
     }
 
 
 if (cartVarExists(cart, "chromInfoPage"))
     {
     cartRemove(cart, "chromInfoPage");
     chromInfoPage();
     }
 else if (differentString(cartUsualString(cart, TRACK_SEARCH,"0"),"0"))
     {
     doSearchTracks(groupList);
     }
 else if (sameWord(configPageCall, "configure") ||
          sameWord(configPageCall, "configure tracks and display"))