Keep mouse drag to 1 block when wrapped
authoramwaterhouse <Andrew Waterhouse>
Tue, 30 Aug 2005 11:35:55 +0000 (11:35 +0000)
committeramwaterhouse <Andrew Waterhouse>
Tue, 30 Aug 2005 11:35:55 +0000 (11:35 +0000)
src/jalview/appletgui/SeqPanel.java
src/jalview/gui/SeqPanel.java

index a619cdf..d7f11bb 100755 (executable)
@@ -152,6 +152,8 @@ public class SeqPanel
     ap.repaint();\r
   }\r
 \r
+  int startWrapBlock=-1;\r
+  int wrappedBlock=-1;\r
   int findRes(MouseEvent evt)\r
  {\r
    int res = 0;\r
@@ -165,10 +167,10 @@ public class SeqPanel
 \r
       int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight;\r
       int cwidth = seqCanvas.getWrappedCanvasWidth(this.getSize().width);\r
-      int block = y/chunkHeight;\r
-      block += av.getStartRes()/cwidth;\r
+      wrappedBlock = y/chunkHeight;\r
+      wrappedBlock += av.getStartRes()/cwidth;\r
 \r
-      res = block*cwidth   +   x / av.getCharWidth();\r
+      res = wrappedBlock*cwidth   +   x / av.getCharWidth();\r
   }\r
   else\r
   {\r
@@ -567,6 +569,7 @@ public class SeqPanel
     int res = findRes(evt);\r
     int seq = findSeq(evt);\r
     oldSeq = seq;\r
+    startWrapBlock=wrappedBlock;\r
 \r
     SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq);\r
 \r
@@ -705,6 +708,9 @@ public class SeqPanel
     int res = findRes(evt);\r
     int y = findSeq(evt);\r
 \r
+    if(wrappedBlock!=startWrapBlock)\r
+        return;\r
+\r
     if(y>=av.alignment.getHeight())\r
       y = av.alignment.getHeight()-1;\r
 \r
index 75f9004..62d95ea 100755 (executable)
@@ -203,6 +203,8 @@ public class SeqPanel extends JPanel
             });\r
     }\r
 \r
+    int startWrapBlock=-1;\r
+    int wrappedBlock=-1;\r
     int findRes(MouseEvent evt)\r
    {\r
      int res = 0;\r
@@ -216,10 +218,10 @@ public class SeqPanel extends JPanel
 \r
         int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight;\r
         int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth());\r
-        int block = y/chunkHeight;\r
-        block += av.getStartRes()/cwidth;\r
+        wrappedBlock = y/chunkHeight;\r
+        wrappedBlock += av.getStartRes()/cwidth;\r
 \r
-        res = block*cwidth   +   x / av.getCharWidth();\r
+        res = wrappedBlock*cwidth   +   x / av.getCharWidth();\r
     }\r
     else\r
     {\r
@@ -688,6 +690,8 @@ public class SeqPanel extends JPanel
       int seq = findSeq(evt);\r
       oldSeq = seq;\r
 \r
+      startWrapBlock=wrappedBlock;\r
+\r
       if(seq<0 || res<0)\r
         return;\r
 \r
@@ -838,6 +842,9 @@ public class SeqPanel extends JPanel
       int res = findRes(evt);\r
       int y = findSeq(evt);\r
 \r
+      if(wrappedBlock!=startWrapBlock)\r
+        return;\r
+\r
       if (stretchGroup == null)\r
       {\r
             return;\r