a8299e74cd03f6c7a44f4307e77381342cfce152
tdreszer
  Thu Jan 26 16:29:39 2012 -0800
Discovered there is still reason to distinguish 'configurable off' from 'configureByPopup off'.  The first is a superset but the second pretains only to retrieving cfg dialog by ajax.
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index ad1a4fc..e2027f2 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -3751,31 +3751,31 @@
         {
         //warn("What do you mean by having a composite (%s) with only one subtrack (%s) ???",tdb->track,tdb->subtracks->track);
         tdb = tdb->subtracks; // show subtrack cfg instead
         prefix = tdb->track;
         }
     else if (tdbIsSubtrack(tdb)                   // called with subtrack
          && tdbIsCompositeView(tdb->parent)       // subtrack has view
          && differentString(prefix,tdb->track)    // and this has been called FOR the view
          && slCount(tdb->parent->subtracks) == 1) // and view has only one subtrack
         prefix = tdb->track; // removes reference to view level
     }
 #endif///def SUBTRACK_CFG
 
 // Cfg could be explicitly blocked, but if tdb is example subtrack
 // then blocking should have occurred before we got here.
-if (!tdbIsSubtrack(tdb) && trackDbSettingBlocksConfiguration(tdb))
+if (!tdbIsSubtrack(tdb) && trackDbSettingBlocksConfiguration(tdb,FALSE))
     return;
 
 // composite/view must pass in example subtrack
 // NOTE: if subtrack types vary then there shouldn't be cfg at composite/view level!
 while (tdb->subtracks)
     tdb = tdb->subtracks;
 
 switch(cType)
     {
     case cfgBedScore:
                         {
                         char *scoreMax = trackDbSettingClosestToHome(tdb, SCORE_FILTER _MAX);
                         int maxScore = (scoreMax ? sqlUnsigned(scoreMax):1000);
                         scoreCfgUi(db, cart,tdb,prefix,title,maxScore,boxed);
                         }
@@ -6256,31 +6256,31 @@
 
 char configurable[membersOfView->count];
 memset(configurable,cfgNone,sizeof(configurable));
 int firstOpened = -1;
 boolean makeCfgRows = FALSE;
 struct trackDb **matchedViewTracks = needMem(sizeof(struct trackDb *) * membersOfView->count);
 
 for (ix = 0; ix < membersOfView->count; ix++)
     {
     if (membersOfView->subtrackList     != NULL
     &&  membersOfView->subtrackList[ix] != NULL)
         {
         struct trackDb *subtrack = membersOfView->subtrackList[ix]->val;
         matchedViewTracks[ix] = subtrack->parent;
         configurable[ix] = (char)cfgTypeFromTdb(subtrack, TRUE);
-        if (configurable[ix] != cfgNone && trackDbSettingBlocksConfiguration(subtrack))
+        if (configurable[ix] != cfgNone && trackDbSettingBlocksConfiguration(subtrack,FALSE))
             configurable[ix]  = cfgNone;
 
         if(configurable[ix] != cfgNone)
             {
             if(firstOpened == -1)
                 {
                 safef(varName, sizeof(varName), "%s.showCfg", matchedViewTracks[ix]->track);
                 if(cartUsualBoolean(cart,varName,FALSE)) // No need for closestToHome: view level input
                     firstOpened = ix;
                 }
             makeCfgRows = TRUE;
             }
         }
     }