91ed276194ce25992417787117a806b8e2172c01 larrym Tue Nov 22 15:40:32 2011 -0800 add tdbSetCartVisibility and use in hgTracks to fix #1666 diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c index f7bc5d3..41bd592 100644 --- src/hg/lib/trackDbCustom.c +++ src/hg/lib/trackDbCustom.c @@ -1268,15 +1268,38 @@ tdbExtrasGet(tdb)->membership = membership; } char *tdbBigFileName(struct sqlConnection *conn, struct trackDb *tdb) // Return file name associated with bigWig. Do a freeMem on returned string when done. { char *fileName = trackDbSetting(tdb, "bigDataUrl"); // always takes precedence if (fileName != NULL) return cloneString(fileName); char query[256]; safef(query, sizeof(query), "select fileName from %s", tdb->table); return sqlQuickString(conn, query); } +void tdbSetCartVisibility(struct trackDb *tdb, struct cart *cart, char *vis) +{ +// Set visibility in the cart. Handles all the complications necessary for subtracks. +char buf[512]; +cartSetString(cart, tdb->track, vis); +if (tdbIsSubtrack(tdb)) + { + safef(buf,sizeof buf, "%s_sel", tdb->track); + cartSetString(cart, buf, "1"); // Will reshape composite + struct trackDb *composite = tdbGetComposite(tdb); + if (composite && tdbIsSuperTrackChild(composite)) + { + safef(buf,sizeof buf, "%s_sel", composite->track); + cartSetString(cart, buf, "1"); // Will reshape supertrack + } + } +else if (tdbIsSuperTrackChild(tdb)) // solo track + { + safef(buf,sizeof buf, "%s_sel", tdb->track); + cartSetString(cart, buf, "1"); // Will reshape supertrack + } +} +