09a9db10915068260ce4a3e16affe0ddface2617 kate Wed Jun 5 14:57:22 2019 -0700 Allow spec'ing a trackDb field as not inherited from supertrack. To replace 'pennantIcon none' construct, as per discussion with QA. refs #23403 diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c index 062dd64..5bc0716 100644 --- src/hg/lib/trackDbCustom.c +++ src/hg/lib/trackDbCustom.c @@ -793,39 +793,47 @@ 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,TRUE)) ctPopup *= -1; } return ctPopup; } +boolean trackDbNoInheritField(char *field) +/* Suppress inheritance of specific fields. + * NOTE: make more efficient if more of these are added */ +{ +return (sameString(field, "pennantIcon")); +} + char *trackDbSetting(struct trackDb *tdb, char *name) -/* Look for a trackDb setting from lowest level on up chain of parents. */ +/* Look for a trackDb setting from lowest level on up chain of parents, + * excepting fields specifically defined as not inheritable */ { struct trackDb *generation; char *trackSetting = NULL; for (generation = tdb; generation != NULL; generation = generation->parent) { trackSetting = trackDbLocalSetting(generation, name); - if (trackSetting != NULL) + if (trackSetting != NULL || trackDbNoInheritField(name)) break; } return trackSetting; } void trackDbAddSetting(struct trackDb *bt, char *name, char *val) { /* Add a setting to a trackDb rec */ hashAdd(trackDbHashSettings(bt), name, cloneString(val)); } char *trackDbSettingByView(struct trackDb *tdb, char *name) /* For a subtrack of a multiview composite, get a setting stored in the view or any other * ancestor. */ {