71dd1c30ee6ab2807a14ef4f3beacb1b4c3ca21f
max
  Mon Mar 18 03:36:21 2024 -0700
make move at least one bp, refs #23343

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 4e353b5..c98acd4 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -9705,30 +9705,34 @@
 /* Scroll percentage of visible window. */
 {
 long offset;
 long newStart, newEnd;
 if (revCmplDisp)
     amount = -amount;
 offset = (long)(amount * virtWinBaseCount);
 /* Make sure don't scroll of ends. */
 newStart = virtWinStart + offset;
 newEnd = virtWinEnd + offset;
 if (newStart < 0)
     offset = -virtWinStart;
 else if (newEnd > virtSeqBaseCount)
     offset = virtSeqBaseCount - virtWinEnd;
 
+// at high zoom levels, offset can be very small: make sure that we scroll at least one bp
+if (offset < 1.0)
+    offset = 1.0;
+
 /* Move window. */
 virtWinStart += offset;
 virtWinEnd += offset;
 }
 
 void dinkWindow(boolean start, long dinkAmount)
 /* Move one end or other of window a little. */
 {
 if (revCmplDisp)
     {
     start = !start;
     dinkAmount = -dinkAmount;
     }
 if (start)
     {