JAL-2613 Unit tests and a fix. Phew.
[jalview.git] / src / jalview / viewmodel / OverviewDimensionsHideHidden.java
index cb9c535..c5ce19b 100644 (file)
@@ -26,17 +26,17 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
   {
     resetAlignmentDims();
 
-    int x = mousex;
-    int y = mousey;
+    int xAsRes = getLeftXFromCentreX(mousex, hiddenCols);
+    int yAsSeq = getTopYFromCentreY(mousey, hiddenSeqs);
 
-    if (x < 0)
+    if (xAsRes < 0)
     {
-      x = 0;
+      xAsRes = 0;
     }
 
-    if (y < 0)
+    if (yAsSeq < 0)
     {
-      y = 0;
+      yAsSeq = 0;
     }
 
     //
@@ -48,7 +48,7 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     // correction
 
     // convert x to residues - this is an absolute position
-    int xAsRes = Math.round((float) x * alwidth / width);
+    // int xAsRes = Math.round((float) x * alwidth / width);
 
     // get viewport width in residues
     int vpwidth = ranges.getViewportWidth();
@@ -58,7 +58,7 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
       // 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) < alwidth)
+      if (ranges.getStartRes() < alwidth)
       {
         xAsRes = alwidth - vpwidth;
       }
@@ -73,9 +73,6 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     // Convert y value to sequence position
     //
 
-    // convert y to residues
-    int yAsSeq = Math.round((float) y * alheight / sequencesHeight);
-
     // get viewport height in sequences
     // add 1 because height includes both endSeq and startSeq
     int vpheight = ranges.getViewportHeight();
@@ -83,7 +80,7 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     if (yAsSeq + vpheight > alheight)
     {
       // went past the end of the alignment, adjust backwards
-      if ((ranges.getEndSeq() + vpheight - 1) < alheight)
+      if (ranges.getEndSeq() < alheight)
       {
         yAsSeq = alheight - vpheight;
       }
@@ -127,4 +124,18 @@ public class OverviewDimensionsHideHidden extends OverviewDimensions
     alwidth = ranges.getVisibleAlignmentWidth();
     alheight = ranges.getVisibleAlignmentHeight();
   }
+
+  @Override
+  protected int getLeftXFromCentreX(int mousex, HiddenColumns hidden)
+  {
+    int vpx = Math.round((float) mousex * alwidth / width);
+    return vpx - ranges.getViewportWidth() / 2;
+  }
+
+  @Override
+  protected int getTopYFromCentreY(int mousey, HiddenSequences hidden)
+  {
+    int vpy = Math.round((float) mousey * alheight / sequencesHeight);
+    return vpy - ranges.getViewportHeight() / 2;
+  }
 }