6fe8c222be4d3cd6eee020f34d29984164e8626f
jnavarr5
  Wed Jun 24 11:24:32 2026 -0700
Fix exon length mouseOver on the codon-level path to match the other path: Length moved to the Exon line with a space before bp, refs #37439

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index b0bcc4872cf..9ade9a18eaa 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -3085,32 +3085,32 @@
                                     lf->mouseOver = NULL;
                                     dyStringClear(codonDy);
                                     // if you change this text, make sure you also change hgTracks.js:mouseOverToLabel
                                     if (!isEmpty(existingText))
                                         dyStringPrintf(codonDy, "<b>Transcript: </b> %s<br>", existingText);
                                     int codonHgvsIx = (codon->codonIndex - 1) * 3;
                                     if (codonHgvsIx >= 0)
                                         {
                                         int cStart = codonHgvsIx + 1;
                                         int cEnd = codonHgvsIx + 3;
                                         int pStart = codonHgvsIx / 3;
                                         dyStringPrintf(codonDy, "<b>Codons: </b> c.%d-%d (p.%d-%d)<br>", 
                                                 cStart, cEnd, pStart, pStart+1);
                                         }
                                     // if you change the text below, also change hgTracks:mouseOverToExon
-                                    dyStringPrintf(codonDy, "<b>Strand: </b> %s&nbsp;&nbsp;&nbsp;&nbsp;<b>Length: </b>%dbp<br><b>Exon: </b>%s %d of %d<br>%s",
-                                                strandStr, e - s, exonIntronText, exonIntronNumber, numExonIntrons, phaseText);
+                                    dyStringPrintf(codonDy, "<b>Strand: </b> %s<br><b>Exon: </b>%s %d of %d&nbsp;&nbsp;<b>Length: </b>%d bp<br>%s",
+                                                strandStr, exonIntronText, exonIntronNumber, numExonIntrons, e - s, phaseText);
                                     tg->mapItem(tg, hvg, item, codonDy->string, tg->mapItemName(tg, item),
                                             sItem, eItem, codonsx, y, w, heightPer);
                                     // and restore the mouseOver
                                     lf->mouseOver = oldMouseOver;
                                     }
                                 }
                             }
                         }
                     }
                 else // either an intron, or else an exon zoomed out too far for codons (or no codons)
                     {
                     // if you change this text, make sure you also change hgTracks.js:mouseOverToLabel
                     // if you change the text below, also change hgTracks:mouseOverToExon
                     char *posNote = "";
                     char *exonOrIntron = "Intron";