200e7d162f72dff119e017c4dfda60b34df02103 tdreszer Mon Sep 27 15:22:14 2010 -0700 Added support for tdbIsContainer() and tdbIsContainerChild() diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 45d0ebe..86b6484 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -3457,25 +3457,33 @@ } } -static void trackDbCompositeMarkup(struct trackDb *parent, struct trackDb *tdbList) +static void trackDbContainerMarkup(struct trackDb *parent, struct trackDb *tdbList) /* Set up things so that the COMPOSITE_NODE and related macros work on tdbList. */ { +if (parent != NULL) + { + if (trackDbLocalSetting(parent, "compositeTrack")) + tdbMarkAsComposite(parent); + if (trackDbLocalSetting(parent, "container")) + tdbMarkAsContainer(parent); + } struct trackDb *tdb; for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { if (parent != NULL) { - if (trackDbSetting(parent, "compositeTrack")) + if (tdbIsContainer(parent)) + tdbMarkAsContainerChild(tdb); + + if (tdbIsComposite(parent) || (parent->parent != NULL && tdbIsComposite(parent->parent))) { - if (trackDbLocalSetting(parent, "compositeTrack")) - tdbMarkAsComposite(parent); if (tdb->subtracks == NULL) tdbMarkAsCompositeChild(tdb); else tdbMarkAsCompositeView(tdb); } } - trackDbCompositeMarkup(tdb, tdb->subtracks); + trackDbContainerMarkup(tdb, tdb->subtracks); } } @@ -3556,7 +3564,7 @@ struct trackDb *tdbList = loadTrackDb(db, NULL); tdbList = trackDbLinkUpGenerations(tdbList); tdbList = pruneEmpties(tdbList, db, chrom, hIsPrivateHost(), 0); -trackDbCompositeMarkup(NULL, tdbList); +trackDbContainerMarkup(NULL, tdbList); rInheritFields(tdbList); slSort(&tdbList, trackDbCmp); return tdbList;