Merge branch 'Jalview-JS/develop' into develop
[jalview.git] / src / jalview / viewmodel / ViewportRanges.java
index 6f817bb..4f671da 100644 (file)
@@ -224,6 +224,7 @@ public class ViewportRanges extends ViewportProperties
    */
   public void setStartEndSeq(int start, int end)
   {
+    // System.out.println("ViewportRange setStartEndSeq " + start + " " + end);
     int[] oldvalues = updateStartEndSeq(start, end);
     int oldstartseq = oldvalues[0];
     int oldendseq = oldvalues[1];
@@ -285,12 +286,12 @@ public class ViewportRanges extends ViewportProperties
    * event.
    * 
    * @param seq
-   *          sequence position
+   *          sequence position in the range [0, height)
    */
   public void setEndSeq(int seq)
   {
-    int height = getViewportHeight();
-    setStartEndSeq(seq - height + 1, seq);
+    // BH 2018.04.18 added safety for seq < 0; comment about not being >= height
+    setStartEndSeq(Math.max(0, seq + 1 - getViewportHeight()), seq);
   }
 
   /**
@@ -425,17 +426,21 @@ public class ViewportRanges extends ViewportProperties
   public void setViewportStartAndHeight(int start, int h)
   {
     int vpstart = start;
+
+    int visHeight = getVisibleAlignmentHeight();
     if (vpstart < 0)
     {
       vpstart = 0;
     }
-    else if ((h <= getVisibleAlignmentHeight())
-            && (vpstart + h - 1 > getVisibleAlignmentHeight() - 1))
+    else if (h <= visHeight && vpstart + h > visHeight)
     // viewport height is less than the full alignment and we are running off
     // the bottom
     {
-      vpstart = getVisibleAlignmentHeight() - h;
+      vpstart = visHeight - h;
     }
+    // System.out.println("ViewportRanges setviewportStartAndHeight " + vpstart
+    // + " " + start + " " + h + " " + getVisibleAlignmentHeight());
+
     setStartEndSeq(vpstart, vpstart + h - 1);
   }