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/trackDbCustom.c src/hg/lib/trackDbCustom.c
index 8835e50..12013af 100644
--- src/hg/lib/trackDbCustom.c
+++ src/hg/lib/trackDbCustom.c
@@ -762,31 +762,31 @@
 {
 if (tdbIsMultiTrackSubtrack(tdb))
     return cfgNone; // multitrack subtracks are never allowed to be separately configured.
 int ctPopup = (int)cfgTypeIfKnown;
 if (ctPopup <= cfgNone)
     ctPopup = (int)cfgTypeFromTdb(tdb,FALSE);
 if (ctPopup <= cfgNone && !tdbIsSubtrack(tdb)) // subtracks must receive CfgType!
     ctPopup = cfgUndetermined; // cfgTypeFromTdb() does not work for every case.
 
 if (ctPopup > cfgNone)
 {
     if (regexMatch(tdb->track, "^snp[0-9]+")     // Special cases to be removed
     ||  regexMatch(tdb->track, "^cons[0-9]+way") // (matches logic in json setup in imageV2.c)
     ||  startsWith("hapmapSnps", tdb->track)
     ||  startsWith("hapmapAlleles", tdb->track)
-    ||  trackDbSettingBlocksConfiguration(tdb))
+    ||  trackDbSettingBlocksConfiguration(tdb,TRUE))
         ctPopup *= -1;
 }
 return ctPopup;
 }
 
 char *trackDbSetting(struct trackDb *tdb, char *name)
 /* Look for a trackDb setting from lowest level on up chain of parents. */
 {
 struct trackDb *generation;
 char *trackSetting = NULL;
 for (generation = tdb; generation != NULL; generation = generation->parent)
     {
     trackSetting = trackDbLocalSetting(generation,name);
     if (trackSetting != NULL)
         break;
@@ -1369,23 +1369,23 @@
     cartSetString(cart, buf, "1");   // Will reshape composite
     struct trackDb *composite = tdbGetComposite(tdb);
     if (composite && tdbIsSuperTrackChild(composite))
         {
         safef(buf,sizeof buf, "%s_sel", composite->track);
         cartSetString(cart, buf, "1");   // Will reshape supertrack
         }
     }
 else if (tdbIsSuperTrackChild(tdb)) // solo track
     {
     safef(buf,sizeof buf, "%s_sel", tdb->track);
     cartSetString(cart, buf, "1");   // Will reshape supertrack
     }
 }
 
-boolean trackDbSettingBlocksConfiguration(struct trackDb *tdb)
+boolean trackDbSettingBlocksConfiguration(struct trackDb *tdb, boolean onlyAjax)
 // Configuration dialogs may be explicitly blocked in tracDb settings
 {
-return (SETTING_IS_OFF(trackDbSettingClosestToHome(tdb, "configurable"))
-     || SETTING_IS_OFF(trackDbSettingClosestToHome(tdb, "configureByPopup")));
-     // NOTE configureByPopup should be deprecated.
+if (SETTING_IS_OFF(trackDbSettingClosestToHome(tdb, "configurable")))
+     return TRUE; // never configurable
+return (onlyAjax && SETTING_IS_OFF(trackDbSettingClosestToHome(tdb,"configureByPopup")));
 }