X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=d39f93710312c916df8bcbbb04b64bdd1e8610cc;hb=373ea2f39547c5432fc2922e5d958e1955de14e8;hp=ce60be6f5718ab1d53f452aba3ba77ea56f406fd;hpb=c932f0e85a8852824cdd8ce790af68682732c85c;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index ce60be6..d39f937 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -343,6 +343,14 @@ public class SeqPanel extends JPanel } /** + * @param evt + * @return absolute column in alignment nearest to the mouse pointer + */ + int findAlignmentColumn(MouseEvent evt) + { + return findNearestColumn(evt,true); + } + /** * Returns the aligned sequence position (base 0) at the mouse position, or * the closest visible one *

@@ -354,6 +362,15 @@ public class SeqPanel extends JPanel */ int findColumn(MouseEvent evt) { + return findNearestColumn(evt, false); + } + + /** + * @param nearestColumn when false returns negative values for out of bound positions - -1 for scale left/right, <-1 if far to right + * @return nearest absolute column to mouse pointer + */ + private int findNearestColumn(MouseEvent evt, boolean nearestColumn) + { int res = 0; int x = evt.getX(); @@ -377,7 +394,11 @@ public class SeqPanel extends JPanel if (x < 0) { // mouse is over left scale - return -1; + if (!nearestColumn) { + return -1; + } else { + x = 0; + } } int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth()); @@ -387,8 +408,12 @@ public class SeqPanel extends JPanel } if (x >= cwidth * charWidth) { - // mouse is over right scale - return -1; + if (!nearestColumn) { + // mouse is over right scale + return -1; + } else { + x = cwidth*charWidth -1; + } } wrappedBlock = y / cHeight; @@ -405,9 +430,16 @@ public class SeqPanel extends JPanel * rather than right-hand gutter */ x = Math.min(x, seqCanvas.getX() + seqCanvas.getWidth()); + if (nearestColumn) + { + x = Math.max(x, 0); + } + res = (x / charWidth) + startRes; res = Math.min(res, av.getRanges().getEndRes()); + } + if (av.hasHiddenColumns()) {