29cda3bb2fb4fa07a300e12de17ba83377706a65
tdreszer
  Fri Jul 29 17:54:52 2011 -0700
More incremental changes before i most switch back to the master brqanch
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index a67a151..0e357c9 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -4056,40 +4056,54 @@
         if (membersForAll->members[di] && -1 != (ix = stringArrayIx(membersForAll->members[di]->groupTag, membership->subgroups, membership->count)))
             dyStringPrintf(dyHtml," %s",membership->membership[ix]);
         }
     if (membersForAll->members[dimV] && -1 != (ix = stringArrayIx(membersForAll->members[dimV]->groupTag, membership->subgroups, membership->count)))
         dyStringPrintf(dyHtml, " %s",membership->membership[ix]);  // Saved view for last
 
     // And finally the checkBox is made!
     safef(buffer, sizeof(buffer), "%s_sel", subtrack->track);
     cgiMakeCheckBoxFourWay(buffer,checkedCB,enabledCB,id,dyStringContents(dyHtml),"onclick='matSubCbClick(this);' style='cursor:pointer'");
     if (useDragAndDrop)
         printf(" ");
 
 #ifdef SUBTRACK_CFG
 #define SUBTRACK_CFG_VIS_SEEN
 #ifdef SUBTRACK_CFG_VIS_SEEN
-    enum trackVisibility vis = tdbVisLimitedByAncestry(cart, subtrack, TRUE);
+    enum trackVisibility vis = tdbVisLimitedByAncestors(cart,subtrack,FALSE,FALSE);
+    char *view = NULL;
+    if (membersForAll->members[dimV] && -1 != (ix = stringArrayIx(membersForAll->members[dimV]->groupTag, membership->subgroups, membership->count)))
+        view = membership->membership[ix];
+    //enum trackVisibility vis = tdbVisLimitedByAncestry(cart, subtrack, TRUE);
     //if (fourStateVisible(fourState))
     //    {
     //    safef(buffer, sizeof(buffer), " onclick='return scm.cfgToggle(\"%s\");'%s",subtrack->track,(fourStateVisible(fourState) ?"":" disabled"));
-    //    hTvDropDownClassVisOnlyAndExtra(subtrack->track,vis,TRUE,"normalText subVisDD", NULL,buffer);
+    //    char classList[256];
+    //    if (view != NULL)
+    //        safef(classList,sizeof(classList),"normalText subVisDD %s",view);
+    //    else
+    //        safecpy(classList,sizeof(classList),"normalText subVisDD");
+    //    hTvDropDownClassVisOnlyAndExtra(subtrack->track,vis,TRUE,classList, NULL,buffer);
     //    }
     //else
     //    {
-        #define SUBTRACK_CFG_VIS "<div id= '%s_faux' class='clickable fauxInput%s subVisDD' style='width:65px;' onclick='return scm.replaceWithVis(this,\"%s\",true);'>%s</div>\n"
-        printf(SUBTRACK_CFG_VIS,subtrack->track,(visibleCB ? "":" disabled"),subtrack->track,hStringFromTv(vis));
+        char classList[256];
+        if (view != NULL)
+            safef(classList,sizeof(classList),"clickable fauxInput%s subVisDD %s",(visibleCB ? "":" disabled"),view); // view should be last!
+        else
+            safef(classList,sizeof(classList),"clickable fauxInput%s subVisDD",(visibleCB ? "":" disabled"));
+        #define SUBTRACK_CFG_VIS "<div id= '%s_faux' class='%s' style='width:65px;' onclick='return scm.replaceWithVis(this,\"%s\",true);'>%s</div>\n"
+        printf(SUBTRACK_CFG_VIS,subtrack->track,classList,subtrack->track,hStringFromTv(vis));
     //    }
 #endif///def SUBTRACK_CFG_VIS_SEEN
     if (cType != cfgNone)  // make a wrench
         {
         //#define SUBTRACK_CFG_STARRED
         #ifdef SUBTRACK_CFG_STARRED
             //lmCleanup(&lm);
             //struct lm *lm = lmInit(0); // FIXME: If used, move lmInit to outside of subtrack loop.
             //struct slPair *changeViewSettings = cartVarsWithPrefixLm(cart, subtrack->track, lm);
             struct slPair *subSpecificSettings = cartVarsWithPrefix(cart, subtrack->track);
             buffer[0] = '\0';
             if (subSpecificSettings)
                 {
                 // Not interested in some:
                 struct slPair *subSpecificFiltered = NULL;
@@ -7123,31 +7137,31 @@
 
 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)))
+    if (!checkBoxToo || fourStateVisible(subtrackFourStateChecked(tdb,cart)))
         vis = tvFull; // to be limited by ancestry
     }
 
 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;