JAL-2849 JAL-2863 file format preferences TODO

[jalview.git] / src / jalview / gui / SeqPanel.java
index 9a5f6c6..61cac46 100644 (file)
@@ -363,8 +363,11 @@ public class SeqPanel extends JPanel
       int original = seqCanvas.cursorX - dx;
       int maxWidth = av.getAlignment().getWidth();
 
+      // TODO: once JAL-2759 is ready, change this loop to something more
+      // efficient
       while (!hidden.isVisible(seqCanvas.cursorX)
-              && seqCanvas.cursorX < maxWidth && seqCanvas.cursorX > 0)
+              && seqCanvas.cursorX < maxWidth && seqCanvas.cursorX > 0
+              && dx != 0)
       {
         seqCanvas.cursorX += dx;
       }
@@ -419,7 +422,10 @@ public class SeqPanel extends JPanel
     {
       if (av.getWrapAlignment())
       {
-        av.getRanges().scrollToWrappedVisible(seqCanvas.cursorX);
+        // scrollToWrappedVisible expects x-value to have hidden cols subtracted
+        int x = av.getAlignment().getHiddenColumns()
+                .findColumnPosition(seqCanvas.cursorX);
+        av.getRanges().scrollToWrappedVisible(x);
       }
       else
       {
@@ -427,8 +433,12 @@ public class SeqPanel extends JPanel
                 seqCanvas.cursorY);
       }
     }
-    setStatusMessage(av.getAlignment().getSequenceAt(seqCanvas.cursorY),
+
+    if (av.getAlignment().getHiddenColumns().isVisible(seqCanvas.cursorX))
+    {
+      setStatusMessage(av.getAlignment().getSequenceAt(seqCanvas.cursorY),
             seqCanvas.cursorX, seqCanvas.cursorY);
+    }
 
     if (repaintNeeded)
     {