94f9b53d3db05371699a8fae11407acf0b30e02f braney Wed Jul 8 16:22:22 2026 -0700 Fix three base-position ruler click issues: show "1 base" instead of "0 bases" at single-base zoom, make single clicks recenter symmetrically instead of drifting one base left, and stop a click on the ruler track's grey side-label strip from hijacking the config popup to do a zoom. refs #27113 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 4a6a891c84c..4373ed0e182 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -1950,30 +1950,38 @@ { scaleBases = pow(10, numFigs); scaleBasesTextNum = pow(10, numFigs % 3); } else if (frontNum > 4) { scaleBases = 2 * pow(10, numFigs); scaleBasesTextNum = 2 * pow(10, numFigs % 3); } if ((numFigs >= 3) && (numFigs < 6)) baseWord = "kb"; else if ((numFigs >= 6) && (numFigs < 9)) baseWord = "Mb"; else if ((numFigs >= 9) && (numFigs < 12)) baseWord = "Gb"; +// At single-base zoom numBases is 1, which sends the frontNum==1 branch below zero +// and rounds the scale down to a nonsensical "0 bases". Never let it drop below one base. +if (scaleBases < 1) + scaleBases = 1; +if (scaleBasesTextNum < 1) + scaleBasesTextNum = 1; +if ((scaleBasesTextNum == 1) && sameString(baseWord, "bases")) + baseWord = "base"; safef(scaleText, scaleTextSize, "%d %s", scaleBasesTextNum, baseWord); return scaleBases; } enum trackVisibility limitedVisFromComposite(struct track *subtrack) /* returns the subtrack visibility which may be limited by composite with multi-view dropdowns. */ { if (tdbIsCompositeChild(subtrack->tdb)) { if (!subtrack->limitedVisSet) { subtrack->visibility = tdbVisLimitedByAncestors(cart, subtrack->tdb, TRUE, TRUE); limitVisibility(subtrack); } }