X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FViewportRanges.java;h=04db165334d2ca6af4f15772767a3d2d3e661272;hb=e57f77dc13f5a295cf49a403da05770a68a6e22b;hp=691e4924cdd34bcde5ed2cc97c89c672fc0ec890;hpb=8c5cefb3ac80bd094a8dab7ce6735a11583b1772;p=jalview.git diff --git a/src/jalview/viewmodel/ViewportRanges.java b/src/jalview/viewmodel/ViewportRanges.java index 691e492..04db165 100644 --- a/src/jalview/viewmodel/ViewportRanges.java +++ b/src/jalview/viewmodel/ViewportRanges.java @@ -97,7 +97,7 @@ public class ViewportRanges extends ViewportProperties */ public int getVisibleAlignmentWidth() { - return al.getWidth() - al.getHiddenColumns().getSize(); + return al.getVisibleWidth(); } /** @@ -224,6 +224,8 @@ public class ViewportRanges extends ViewportProperties */ public void setStartEndSeq(int start, int end) { + // jalview.bin.Console.outPrintln("ViewportRange setStartEndSeq " + start + + // " " + end); int[] oldvalues = updateStartEndSeq(start, end); int oldstartseq = oldvalues[0]; int oldendseq = oldvalues[1]; @@ -285,12 +287,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 +427,22 @@ 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; } + // jalview.bin.Console.outPrintln("ViewportRanges setviewportStartAndHeight + // " + vpstart + // + " " + start + " " + h + " " + getVisibleAlignmentHeight()); + setStartEndSeq(vpstart, vpstart + h - 1); } @@ -580,8 +587,8 @@ public class ViewportRanges extends ViewportProperties } int residuesToScroll = width * widthsToScroll; - int newStartRes = up ? oldStartRes - residuesToScroll : oldStartRes - + residuesToScroll; + int newStartRes = up ? oldStartRes - residuesToScroll + : oldStartRes + residuesToScroll; if (newStartRes < 0) { newStartRes = 0; @@ -607,7 +614,7 @@ public class ViewportRanges extends ViewportProperties { scrollUp(false); } - + HiddenColumns hidden = al.getHiddenColumns(); while (x < hidden.visibleToAbsoluteColumn(startRes)) {