b038f3dafce99493b0ca00305538c6a3dd6f041a
jcasper
  Tue Sep 26 15:58:44 2023 -0700
Initial commit of track decorators, refs #30237

diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c
index 0da9770..6ff6c00 100644
--- src/hg/lib/trackDbCustom.c
+++ src/hg/lib/trackDbCustom.c
@@ -1578,31 +1578,32 @@
     return convertNameValueString(metadataInTdb);
 
 return NULL;
 }
 
 boolean trackSettingIsFile(char *setting)
 /* Returns TRUE if setting found in trackDb stanza is a file setting that
  * would benefit from directory $D substitution among other things - looks for
  * settings that ends in "Url" and a few others. */
 {
 return endsWith(setting, "Url") ||
     sameString(setting, "bigDataIndex") ||
     sameString(setting, "instaPort") ||
     sameString(setting, "frames") ||
     sameString(setting, "summary") ||
-    sameString(setting, "searchTrix");
+    sameString(setting, "searchTrix") ||
+    (startsWith("decorator.", setting) && endsWith(setting, ".url"));
 }
 
 char *labelAsFilteredNumber(char *label, unsigned numOut)
 /* add text to label to indicate filter is active */
 {
 char buffer[2048];
 safef(buffer, sizeof buffer, " (%d items filtered out)", numOut);
 return catTwoStrings(label, buffer);
 }
 
 char *labelAsFiltered(char *label)
 /* add text to label to indicate filter is active */
 {
 #define FILTER_ACTIVATED " (filter activated)"
 if (stringIn(FILTER_ACTIVATED, label))