8be71ea001dc92c31702850b82736793299214eb
max
  Tue Apr 30 13:58:44 2019 -0700
fix for between-bp highlight bug, many thanks to Angie for fixing my fix, refs #23349 and related build patch

diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 99173a0..65d5c70 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -408,30 +408,35 @@
             x1 = Math.max(hgTracks.insideX, selStart);
             startDelta = Math.floor(mult * (x1 - hgTracks.insideX + halfBpWidth));
         }
         var endDelta;
         var x2;
         if (hgTracks.revCmplDisp) {
             endDelta = startDelta;
             x2 = Math.min(imgWidth, selEnd);
             startDelta = Math.floor(mult * (imgWidth - x2 + halfBpWidth));
         } else {
             x2 = Math.max(hgTracks.insideX, selEnd);
             endDelta = Math.floor(mult * (x2 - hgTracks.insideX - halfBpWidth));
         }
         var newStart = hgTracks.winStart + startDelta;
         var newEnd = hgTracks.winStart + 1 + endDelta;
+
+        // if user selects space between two bases, start>end can happen
+        if (newStart >= newEnd)
+            newStart = newEnd-1;
+
         if (newEnd > winEnd) {
             newEnd = winEnd;
         }
         return {chromStart : newStart, chromEnd : newEnd};
     },
 
     chromToVirtChrom: function (chrom, chromStart, chromEnd)
     {   // Convert regular chromosome position to virtual chrom coordinates using hgTracks.windows list
         // Consider the first contiguous set of overlapping regions to define the match (for now).
         // only works for regions covered by the current hgTracks.windows
         var virtStart = -1, virtEnd = -1;
         var s,e;
         var i, len;
         for (i = 0, len = hgTracks.windows.length; i < len; ++i) {
             var w = hgTracks.windows[i];