y = 0;
}
+ if (ranges.isWrappedMode())
+ {
+ y = 0; // sorry, no vertical scroll when wrapped
+ }
+
//
// Convert x value to residue position
//
// went past the end of the alignment, adjust backwards
// if last position was before the end of the alignment, need to update
- if ((ranges.getEndRes() + vpwidth - 1) < visAlignWidth)
+ if (ranges.getEndRes() < visAlignWidth)
{
visXAsRes = hiddenCols.findColumnPosition(hiddenCols
.subtractVisibleColumns(vpwidth - 1, alwidth - 1));
}
else
{
- visXAsRes = ranges.getEndRes();
+ visXAsRes = ranges.getStartRes();
}
}
// so convert back after getting visible region position
yAsSeq = hiddenSeqs.adjustForHiddenSeqs(hiddenSeqs
.findIndexWithoutHiddenSeqs(yAsSeq));
+ yAsSeq = Math.max(yAsSeq, 0); // -1 if before first visible sequence
// check in case we went off the edge of the alignment
int visAlignHeight = hiddenSeqs.findIndexWithoutHiddenSeqs(alheight);
int visYAsSeq = hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq);
+ visYAsSeq = Math.max(visYAsSeq, 0); // -1 if before first visible sequence
if (visYAsSeq + vpheight - 1 > visAlignHeight)
{
// went past the end of the alignment, adjust backwards
- if ((ranges.getEndSeq() + vpheight - 1) < visAlignHeight)
+ if (ranges.getEndSeq() < visAlignHeight)
{
visYAsSeq = hiddenSeqs.findIndexWithoutHiddenSeqs(hiddenSeqs
.subtractVisibleRows(vpheight - 1, alheight - 1));
}
else
{
- visYAsSeq = ranges.getEndSeq();
+ visYAsSeq = ranges.getStartSeq();
}
}
// update viewport
- ranges.setStartRes(xAsRes);
- ranges.setStartSeq(yAsSeq);
-
+ ranges.setStartRes(visXAsRes);
+ ranges.setStartSeq(visYAsSeq);
}
/**
HiddenColumns hiddenCols)
{
// work with absolute values of startRes and endRes
- int startRes = hiddenCols
- .adjustForHiddenColumns(ranges.getStartRes());
+ int startRes = hiddenCols.adjustForHiddenColumns(ranges.getStartRes());
int endRes = hiddenCols.adjustForHiddenColumns(ranges.getEndRes());
// work with absolute values of startSeq and endSeq
int startSeq = hiddenSeqs.adjustForHiddenSeqs(ranges.getStartSeq());
int endSeq = hiddenSeqs.adjustForHiddenSeqs(ranges.getEndSeq());
- setBoxPosition(startRes, endRes, startSeq, endSeq);
+ setBoxPosition(startRes, startSeq, endRes - startRes + 1, endSeq
+ - startSeq + 1);
}
@Override