d3811bb3f0bc25705d4629404274a49e1b359957
galt
  Tue Jan 13 14:57:10 2015 -0800
In hgc, hgGene, and hgTrackUi menu link to hgTables automatically selects the group track and table -- now fixed for containers
diff --git src/hg/lib/web.c src/hg/lib/web.c
index f8325c3..91bd3d5 100644
--- src/hg/lib/web.c
+++ src/hg/lib/web.c
@@ -1297,47 +1297,50 @@
 	    dyStringAppend(dy, "?");
 	dyStringAppend(dy, uiVars);
 	if(match[1].rm_so != match[1].rm_eo)
 	    dyStringAppend(dy, "&");
 	}
     if(offset < len)
 	dyStringAppend(dy, menuStr + offset);
     freez(&menuStr);
     menuStr = dyStringCannibalize(&dy);
     }
 
 if(scriptName)
     {
     // Provide hgTables options for some CGIs.
     char hgTablesOptions[1024] = "";
-    char *table = (cart == NULL ? NULL :
+    char *track = (cart == NULL ? NULL :
                    (endsWith(scriptName, "hgGene") ?
                     cartOptionalString(cart, "hgg_type") :
                     cartOptionalString(cart, "g")));
-    if (table && cart && db &&
+    if (track && cart && db &&
         (endsWith(scriptName, "hgc") || endsWith(scriptName, "hgTrackUi") ||
          endsWith(scriptName, "hgGene")))
         {
-        struct trackDb *tdb = hTrackDbForTrack(db, table);
-        if (tdb != NULL)
+        struct trackDb *tdb = hTrackDbForTrack(db, track);
+        if (tdb)
+	    {
+	    struct trackDb *topLevel = trackDbTopLevelSelfOrParent(tdb); 
 	    safef(hgTablesOptions, sizeof  hgTablesOptions, 
 		    "../cgi-bin/hgTables?hgta_doMainPage=1&hgta_group=%s&hgta_track=%s&hgta_table=%s&", 
-		    tdb->grp, tdb->track, tdb->table);
+		    topLevel->grp, topLevel->track, tdb->table);
 	    menuStr = replaceChars(menuStr, "../cgi-bin/hgTables?", hgTablesOptions);
 	    trackDbFree(&tdb);
 	    }
         }
+    }
 
 if(!loginSystemEnabled())
     stripRegEx(menuStr, "<\\!-- LOGIN_START -->.*<\\!-- LOGIN_END -->", REG_ICASE);
 
 if(scriptName)
     {  // Provide optional official mirror servers menu items
     char *geoMenu = geoMirrorMenu();
     char *pattern = "<!-- OPTIONAL_MIRROR_MENU -->";
     char *newMenuStr = replaceChars(menuStr, pattern, geoMenu);
     freez(&menuStr);
     menuStr = newMenuStr;
     }
 
 
 if(scriptName)