cda0050210dc937dd156034ac46ca4857e2f0fac tdreszer Thu Jan 20 10:41:23 2011 -0800 Needed to hook up generations and set container flags when getting tdb for track and ancestors diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index dab63a0..25283ff 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -3683,33 +3683,43 @@ char *parent = trackDbLocalSetting(ancestor, "parent"); if (parent != NULL) parentTrack = cloneFirstWord(parent); if (parentTrack == NULL) { char *super = trackDbLocalSetting(ancestor, "superTrack"); if (super != NULL && !startsWith("on", super)) parentTrack = cloneFirstWord(super); } /* If no parent we're done. */ if (parentTrack == NULL) break; ancestor->parent = loadTrackDbForTrack(conn, parentTrack); + if (ancestor->parent == NULL) + break; + + if (!tdbIsSuper(ancestor->parent)) // supers link to children differently + ancestor->parent->subtracks = ancestor; + else + ancestor->parent->children = slRefNew(ancestor); ancestor = ancestor->parent; } - +if (tdbIsSuper(ancestor)) + ancestor = ancestor->children->val; +trackDbContainerMarkup(NULL, ancestor); +rInheritFields(ancestor); hFreeConn(&conn); return tdb; } struct trackDb *hCompositeTrackDbForSubtrack(char *db, struct trackDb *sTdb) /* Given a trackDb that may be for a subtrack of a composite track, * return the trackDb for the composite track if we can find it, else NULL. * Note: if the composite trackDb is found and returned, then its subtracks * member will contain a newly allocated tdb like sTdb (but not ==). */ { struct trackDb *cTdb = NULL; if (sTdb != NULL) { char *subTrackSetting = cloneString(trackDbLocalSetting(sTdb, "parent")); if (subTrackSetting != NULL)