c2c65344c6ae672dbc05e7920049803c3fe29874 tdreszer Thu Sep 16 12:29:34 2010 -0700 Fixed tdbVisLimitedByAncestry which caused supertrack contained and visibble tracks to appear hidden in findTracks. Added composite/view vis reshaping based upon subtrack specific vis. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index c5e8b57..df03c13 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -412,6 +412,7 @@ "pack", "squish" }; +#define hTvStringShowSameAsFull "show" enum trackVisibility hTvFromStringNoAbort(char *s) /* Given a string representation of track visibility, return as @@ -419,7 +420,11 @@ { int vis = stringArrayIx(s, hTvStrings, ArraySize(hTvStrings)); if (vis < 0) + { + if (sameString(hTvStringShowSameAsFull,s)) + return tvShow; // Show is the same as full! vis = 0; // don't generate bogus value on invalid input + } return vis; } @@ -2187,6 +2192,22 @@ return fourState; } +void subtrackFourStateCheckedSet(struct trackDb *subtrack, struct cart *cart,boolean checked, boolean enabled) +/* Sets the fourState Checked in the cart and updates cached state */ +{ +int fourState = ( checked ? FOUR_STATE_CHECKED : FOUR_STATE_UNCHECKED ); +if (!enabled) + FOUR_STATE_DISABLE(fourState); + +char objName[SMALLBUF]; +char objVal[5]; +safef(objName, sizeof(objName), "%s_sel", subtrack->track); +safef(objVal, sizeof(objVal), "%d", fourState); +cartSetString(cart, objName, objVal); +tdbExtrasAddOrUpdate(subtrack,FOUR_STATE_KEY,(void *)(long)fourState); +} + + typedef struct _dimensions { int count; char**names; @@ -6710,26 +6731,26 @@ return b; } -enum trackVisibility tdbVisLimitedByAncestry(struct cart *cart, struct trackDb *tdb, enum trackVisibility vis, boolean noSupers) +enum trackVisibility tdbVisLimitedByAncestry(struct cart *cart, struct trackDb *tdb, boolean noSupers) // returns visibility limited by ancestry (or subtrack vis override) { +enum trackVisibility vis = tdb->visibility; +if (cart) + { char *cartVis = cartOptionalString(cart, tdb->track); if (cartVis != NULL) { + vis = hTvFromString(cartVis); if (tdbIsCompositeChild(tdb)) - return hTvFromString(cartVis); // subtrackVis override - vis = tvMin(vis, hTvFromString(cartVis) ); + return vis; // subtrackVis override + } } -else - vis = tvMin(vis, tdb->visibility ); - if (vis == tvHide || tdb->parent == NULL) return vis; if (noSupers && tdbIsSuperTrack(tdb->parent)) return vis; - -return tdbVisLimitedByAncestry(cart,tdb->parent,vis,noSupers); +return tvMin(vis,tdbVisLimitedByAncestry(cart,tdb->parent,noSupers)); } char *compositeViewControlNameFromTdb(struct trackDb *tdb)