c5d4303120891ad38c855d560c94b1db76d5f038 tdreszer Thu Jul 8 14:50:16 2010 -0700 Remove subtrack level vis override when composite or view vis comes in. diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index fce99cc..109c9d0 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -4313,6 +4313,40 @@ 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 */ +{ +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 + } +} + void doTrackForm(char *psOutput, struct tempName *ideoTn) /* Make the tracks display form with the zoom/scroll buttons and the active * image. If the ideoTn parameter is not NULL, it is filled in if the @@ -4380,7 +4414,11 @@ safef(wildCard,sizeof(wildCard),"*_%s",IMG_ORDER_VAR); cartRemoveLike(cart, wildCard); } -#endif//def IMAGEv2_DRAG_REORDER +#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); +#endif///def SUBTRACKS_HAVE_VIS /* Honor hideAll and visAll variables */ if (hideAll || defaultTracks)