X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignmentPanel.java;h=6826c4cfa381d9114e0f18fff8030967fa85e5e9;hb=204ab8e31a8230cb1fdf328a86f675e55c6aa990;hp=e402b9b3606a9d998745a88db13cf707c08f768b;hpb=acbd5f3bbe716bb686872b8fee5431c33dd29d08;p=jalview.git diff --git a/src/jalview/appletgui/AlignmentPanel.java b/src/jalview/appletgui/AlignmentPanel.java index e402b9b..6826c4c 100644 --- a/src/jalview/appletgui/AlignmentPanel.java +++ b/src/jalview/appletgui/AlignmentPanel.java @@ -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