482e17639372073c44c32d26707a69b8132b3ba4 braney Fri Aug 5 18:05:55 2011 -0700 changes related to #4842 diff --git src/hg/hgTables/hgTables.c src/hg/hgTables/hgTables.c index d860c17..3cdd424 100644 --- src/hg/hgTables/hgTables.c +++ src/hg/hgTables/hgTables.c @@ -883,34 +883,48 @@ } /* Scan through group table, putting in ones where we have data. */ groupsAll = hLoadGrps(database); for (group = slPopHead(&groupsAll); group != NULL; group = slPopHead(&groupsAll)) { if (hashLookup(groupsInTrackList, group->name)) { slAddTail(&groupList, group); hashAdd(groupsInDatabase, group->name, group); } else grpFree(&group); } +/* if we have custom tracks, we want to add the track hubs + * after that group */ +struct grp *addAfter = NULL; +if (sameString(groupList->name, "user")) + addAfter = groupList; + /* Add in groups from hubs. */ for (group = slPopHead(pHubGrpList); group != NULL; group = slPopHead(pHubGrpList)) { - slAddTail(&groupList, group); + /* check to see if we're inserting hubs rather than + * adding them to the front of the list */ + if (addAfter != NULL) + { + group->next = addAfter->next; + addAfter->next = group; + } + else + slAddHead(&groupList, group); hashAdd(groupsInDatabase, group->name, group); } /* Do some error checking for tracks with group names that are * not in database. Just warn about them. */ for (track = trackList; track != NULL; track = track->next) { if (!hashLookup(groupsInDatabase, track->grp)) warn("Track %s has group %s, which isn't in grp table", track->table, track->grp); } /* Create dummy group for all tracks. */ AllocVar(group); group->name = cloneString("allTracks");