2704a613e0835e7cb815963c792a40e4627b4b8d tdreszer Mon Feb 6 16:20:27 2012 -0800 Subtracks were sometimes seen in the image even though they are not checked. Fix for redmine 2375 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index e2027f2..76141b9 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -7374,39 +7374,42 @@ if (subtrackOverride != NULL && tdbIsContainerChild(tdb)) *subtrackOverride = TRUE; } } return vis; } enum trackVisibility tdbVisLimitedByAncestors(struct cart *cart, struct trackDb *tdb, boolean checkBoxToo, boolean foldersToo) // returns visibility limited by ancestry. This includes subtrack vis override and parents limit maximum. // cart may be null, in which case, only trackDb settings (default state) are examined // checkBoxToo means ensure subtrack checkbox state is visible // foldersToo means limit by folders (aka superTracks) as well. { boolean subtrackOverride = FALSE; enum trackVisibility vis = tdbLocalVisibility(cart,tdb,&subtrackOverride); -if (subtrackOverride) - return vis; -// subtracks without explicit (cart) vis but are selected, should get inherited vis if (tdbIsContainerChild(tdb)) { - if (!checkBoxToo || fourStateVisible(subtrackFourStateChecked(tdb,cart))) - vis = tvFull; // to be limited by ancestry + // subtracks without explicit (cart) vis but are selected, should get inherited vis + if (!subtrackOverride) + vis = tvFull; + // subtracks with checkbox that says no, are stopped cold + if (checkBoxToo && !fourStateVisible(subtrackFourStateChecked(tdb,cart))) + vis = tvHide; // Checkbox says no } +if (subtrackOverride) + return vis; if (vis == tvHide || tdb->parent == NULL || (!foldersToo && tdbIsFolder(tdb->parent))) // aka superTrack return vis; // end of line return tvMin(vis,tdbVisLimitedByAncestors(cart,tdb->parent,checkBoxToo,foldersToo)); } char *compositeViewControlNameFromTdb(struct trackDb *tdb) /* Returns a string with the composite view control name if one exists */ { char *stView = NULL; char *name = NULL; char *rootName = NULL; // This routine should give these results: compositeName.viewName or else subtrackName.viewName or else compositeName or else subtrackName if(tdbIsCompositeChild(tdb) == TRUE && trackDbLocalSetting(tdb, "parent") != NULL)