7cdc9f476f19a65d36e015aadf41be9634e15920 angie Wed Apr 4 11:45:43 2018 -0700 For genePred tracks, limit baseColorDrawOpt to genomicCodons if it's set to a fancy PSL option because the setting comes from a view that includes a PSL track. refs #21194 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index cb2c6d8..ae8b3ae 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -1183,44 +1183,54 @@ cgiMakeDropListFull(var, baseColorDrawItemOptionLabels, baseColorDrawItemOptionValues, ArraySize(baseColorDrawItemOptionLabels), curValue, NULL, NULL); printf("<A HREF=\"%s\">Help on base coloring</A><BR>", CDS_BASE_HELP_PAGE); } } void baseColorDrawOptDropDown(struct cart *cart, struct trackDb *tdb) /* Make appropriately labeled drop down of options if any are applicable.*/ { baseColorDropLists(cart, tdb, tdb->track); } +static enum baseColorDrawOpt limitDrawOptForType(struct trackDb *tdb, enum baseColorDrawOpt drawOpt) +/* If tdb->type is genePred, but something fancier like mRNA codons is enabled because the setting + * is coming from a view that also includes a PSL track, downgrade it to genomic codons to avoid + * drawing problems caused by the inappropriate setting. #21194 */ +{ +if (startsWith("genePred", tdb->type) && drawOpt > baseColorDrawGenomicCodons) + drawOpt = baseColorDrawGenomicCodons; +return drawOpt; +} + enum baseColorDrawOpt baseColorDrawOptEnabled(struct cart *cart, struct trackDb *tdb) /* Query cart & trackDb to determine what drawing mode (if any) is enabled. */ { char *stringVal = NULL; assert(cart); assert(tdb); /* trackDb can override default of OFF; cart can override trackDb. */ stringVal = trackDbSettingClosestToHomeOrDefault(tdb, BASE_COLOR_DEFAULT, BASE_COLOR_DRAW_OFF); stringVal = cartUsualStringClosestToHome(cart, tdb, FALSE, BASE_COLOR_VAR_SUFFIX,stringVal); -return baseColorDrawOptStringToEnum(stringVal); +return limitDrawOptForType(tdb, baseColorDrawOptStringToEnum(stringVal)); } /*** Control of fancy indel display code: ***/ static boolean tdbOrCartBoolean(struct cart *cart, struct trackDb *tdb, char *settingName, char *defaultOnOff) /* Query cart & trackDb to determine if a boolean variable is set. */ { boolean alreadySet; alreadySet = !sameString("off",trackDbSettingOrDefault(tdb, settingName, defaultOnOff)); alreadySet = cartUsualBooleanClosestToHome(cart, tdb, FALSE, settingName, alreadySet); // NOTE: parentLevel=FALSE because tdb param already is at appropriate level return alreadySet; }