d8900846fdae9183808ccd57864191ee48fca00e
chmalee
  Fri Jun 5 10:07:25 2026 -0700
myVariants: fix item display and HGVS gene-track lookup on GenArk hubs, refs #33808

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c
index 593c8a950b3..8ef7f5b5a10 100644
--- src/hg/lib/trackHub.c
+++ src/hg/lib/trackHub.c
@@ -1256,30 +1256,45 @@
     *under = 0;
     return ret;
     }
 
 return NULL;
 }
 
 char *trackHubSkipHubName(char *name)
 /* Skip the hub_#_ prefix in a hub name. */
 {
 if ((name == NULL) || !startsWith("hub_", name))
     return name;
 return strchr(&name[4], '_') + 1;
 }
 
+struct trackDb *findTdbByBareName(struct trackDb *tdbList, char *bareName)
+/* Recursively search tdbList (and subtracks) for a tdb whose bare track name matches. */
+{
+struct trackDb *tdb;
+for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
+    {
+    if (sameString(trackHubSkipHubName(tdb->track), bareName))
+        return tdb;
+    struct trackDb *found = findTdbByBareName(tdb->subtracks, bareName);
+    if (found != NULL)
+        return found;
+    }
+return NULL;
+}
+
 void trackHubAddGroupName(char *hubName, struct trackDb *tdbList)
 /* Add group tag that references the hubs symbolic name. */
 {
 struct trackDb *tdb;
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
     {
     tdb->grp = cloneString(hubName);
     hashReplace(tdb->settingsHash, "group", tdb->grp);
     }
 }
 
 void trackHubAddOneDescription(char *trackDbFile, struct trackDb *tdb)
 /* Fetch tdb->track's html description and store in tdb->html. */
 {
 /* html setting should always be set because we set it at load time */