db2405f972ffdd9a183d1b1708c4aaf6fb6804bf tdreszer Tue Aug 10 16:39:16 2010 -0700 Fixed bug when SUBTRACKS_HAVE_VIS was on and wigMafs triggered infinite loop diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 34a9cb7..af695f1 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -1553,6 +1553,14 @@ /* returns the subtrack visibility which may be limited by composite with multi-view dropdowns. */ { #ifdef SUBTRACKS_HAVE_VIS +if (tdbIsCompositeChild(subtrack->tdb)) + { + char setting[512]; + safef(setting,sizeof(setting),"%s_sel",subtrack->track); // Must have "{trackName}_sel" to use subtrack level vis! + // FIXME: four state logic is for subtracks only and exists as static in hui.c. When time is right, make this logic non-static + #define FOURSTATE_CHECKED 1 + if (FOURSTATE_CHECKED == cartUsualInt(cart, setting, 0)) // Don't need all 4 states here. Just checked/not + { char *var = cartOptionalString(cart, subtrack->track); if (var) { @@ -1570,6 +1578,8 @@ return hTvFromString(var); } + } + } #endif///def SUBTRACKS_HAVE_VIS enum trackVisibility vis = subtrack->limitedVis == tvHide ? @@ -4343,38 +4353,12 @@ warn("Unrecognized jsCommand %s", command); } -void subtrackVisCartCleanup(struct track *trackList,struct cart *newCart,struct hash *oldVars) -/* When composite/view vis changes, remove subtrack specific vis */ +void subtrackCartCleanup(struct track *trackList,struct cart *newCart,struct hash *oldVars) +/* When composite/view settings changes, remove subtrack specific vis */ { struct track *track = trackList; for (;track != NULL; track = track->next) - { - if(!tdbIsComposite(track->tdb)) - continue; - boolean compositeWide = cartValueHasChanged(newCart,oldVars,track->track,TRUE); - - boolean hasViews = FALSE; - struct trackDb *tdbView = track->tdb->subtracks; - for (;tdbView != NULL; tdbView = tdbView->next) - { - char * view = NULL; - if (!tdbIsView(tdbView,&view)) - break; - - hasViews = TRUE; - boolean viewLevel = FALSE; - if(!compositeWide) - { - char settingName[512]; // wgEncodeOpenChromChip.Peaks.vis - safef(settingName,sizeof(settingName),"%s.%s.vis",track->track,view); - viewLevel = cartValueHasChanged(newCart,oldVars,settingName,TRUE); - } - if(compositeWide || viewLevel) - cartRemoveFromTdbTree(newCart,tdbView,NULL,TRUE); // clean up children, skipping view - } - if (compositeWide && !hasViews) - cartRemoveFromTdbTree(newCart,track->tdb,NULL,TRUE); // clean up children, skipping composite - } + cartTdbTreeCleanupOverrides(track->tdb,newCart,oldVars); } void doTrackForm(char *psOutput, struct tempName *ideoTn) @@ -4446,8 +4430,7 @@ } #endif///def IMAGEv2_DRAG_REORDER #ifdef SUBTRACKS_HAVE_VIS -// Here is where subtrack vis override must be removed when composite vis is updated -subtrackVisCartCleanup(trackList,cart,oldVars); +subtrackCartCleanup(trackList,cart,oldVars); // Subtrack settings must be removed when composite/view settings are updated #endif///def SUBTRACKS_HAVE_VIS /* Honor hideAll and visAll variables */ @@ -5638,6 +5621,7 @@ hgFindMatches = NULL; // XXXX necessary ??? } +hPrintf(commonCssStyles()); jsIncludeFile("jquery.js", NULL); jsIncludeFile("utils.js", NULL); if(dragZooming)