X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FViewportRanges.java;h=6f817bb0cdd8c8a82a93a7b5c43da29686cfcc62;hb=3027bfb4b1b13af8686abcd419888e03141bd672;hp=e463cc3e29731f1baa4d004d9832ed114be3d3d3;hpb=c55dd45c7f7eeb986ed32189dea45d1caa464b74;p=jalview.git diff --git a/src/jalview/viewmodel/ViewportRanges.java b/src/jalview/viewmodel/ViewportRanges.java index e463cc3..6f817bb 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(); } /** @@ -544,7 +544,8 @@ public class ViewportRanges extends ViewportProperties * the startRes changed, else false. * * @param res - * residue position to scroll to + * residue position to scroll to NB visible position not absolute + * alignment position * @return */ public boolean scrollToWrappedVisible(int res) @@ -563,7 +564,7 @@ public class ViewportRanges extends ViewportProperties * Calculate wrapped start residue from visible start residue * * @param res - * absolute start residue + * visible start residue * @return left column of panel res will be located in */ private int calcWrappedStartResidue(int res) @@ -571,11 +572,6 @@ public class ViewportRanges extends ViewportProperties int oldStartRes = startRes; int width = getViewportWidth(); - /*if (res >= oldStartRes && res < oldStartRes + width) - { - return false; - }*/ - boolean up = res < oldStartRes; int widthsToScroll = Math.abs((res - oldStartRes) / width); if (up) @@ -597,9 +593,9 @@ public class ViewportRanges extends ViewportProperties * Scroll so that (x,y) is visible. Fires a property change event. * * @param x - * x position in alignment + * x position in alignment (absolute position) * @param y - * y position in alignment + * y position in alignment (absolute position) */ public void scrollToVisible(int x, int y) { @@ -613,14 +609,14 @@ public class ViewportRanges extends ViewportProperties } HiddenColumns hidden = al.getHiddenColumns(); - while (x < hidden.adjustForHiddenColumns(startRes)) + while (x < hidden.visibleToAbsoluteColumn(startRes)) { if (!scrollRight(false)) { break; } } - while (x > hidden.adjustForHiddenColumns(endRes)) + while (x > hidden.visibleToAbsoluteColumn(endRes)) { if (!scrollRight(true)) { @@ -633,16 +629,16 @@ public class ViewportRanges extends ViewportProperties * Set the viewport location so that a position is visible * * @param x - * column to be visible + * column to be visible: absolute position in alignment * @param y - * row to be visible + * row to be visible: absolute position in alignment */ public boolean setViewportLocation(int x, int y) { boolean changedLocation = false; - // convert the x,y location to absolute values - int visX = al.getHiddenColumns().findColumnPosition(x); + // convert the x,y location to visible coordinates + int visX = al.getHiddenColumns().absoluteToVisibleColumn(x); int visY = al.getHiddenSequences().findIndexWithoutHiddenSeqs(y); // if (vis_x,vis_y) is already visible don't do anything @@ -660,18 +656,22 @@ public class ViewportRanges extends ViewportProperties else { // set the viewport x location to contain vis_x + int newstartres = visX; int width = getViewportWidth(); - updateStartEndRes(visX, visX + width - 1); + if (newstartres + width - 1 > getVisibleAlignmentWidth() - 1) + { + newstartres = getVisibleAlignmentWidth() - width; + } + updateStartEndRes(newstartres, newstartres + width - 1); // set the viewport y location to contain vis_y - int startseq = visY; + int newstartseq = visY; int height = getViewportHeight(); - if (startseq + height - 1 > getVisibleAlignmentHeight() - 1) + if (newstartseq + height - 1 > getVisibleAlignmentHeight() - 1) { - startseq = getVisibleAlignmentHeight() - height; + newstartseq = getVisibleAlignmentHeight() - height; } - updateStartEndSeq(startseq, - startseq + height - 1); + updateStartEndSeq(newstartseq, newstartseq + height - 1); newresseq = new int[] { startRes, startSeq }; }