JAL-147 improved wrapped scrolling (including Overview) with
[jalview.git] / src / jalview / appletgui / AlignmentPanel.java
index e402b9b..6826c4c 100644 (file)
@@ -817,13 +817,17 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
       // if we're scrolling to the position we're already at, stop
       // this prevents infinite recursion of events when the scroll/viewport
       // ranges values are the same
-      if ((offy * rowSize == oldX) && (oldwidth == rowSize))
+      int newX = offy * rowSize;
+      newX += oldX % rowSize; // horizontal scroll offset if any
+      if ((newX == oldX) && (oldwidth == rowSize))
       {
         return;
       }
       else if (offy > -1)
       {
-        vpRanges.setViewportStartAndWidth(offy * rowSize, rowSize);
+        // limit page up/down to one width's worth of positions
+        newX = newX > oldX ? oldX + rowSize : oldX - rowSize;
+        vpRanges.setViewportStartAndWidth(newX, rowSize);
       }
     }
     else