JAL-147 correct width out-by-one drawing ids
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Mon, 3 Jul 2017 14:27:01 +0000 (15:27 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Mon, 3 Jul 2017 14:27:01 +0000 (15:27 +0100)
src/jalview/appletgui/IdCanvas.java
src/jalview/gui/IdCanvas.java

index 991f3ea..48c0c40 100755 (executable)
@@ -101,7 +101,7 @@ public class IdCanvas extends Panel implements ViewportListenerI
 
   public void fastPaint(int vertical)
   {
-    if (gg == null)
+    if (gg == null || av.getWrapAlignment())
     {
       repaint();
       return;
@@ -306,8 +306,7 @@ public class IdCanvas extends Panel implements ViewportListenerI
 
     int cHeight = alheight * avcharHeight + hgap + annotationHeight;
 
-    int rowSize = av.getRanges().getEndRes()
-            - av.getRanges().getStartRes();
+    int rowSize = av.getRanges().getViewportWidth();
 
     // hardwired italic IDs in applet currently
     Font italic = new Font(av.getFont().getName(), Font.ITALIC, av
@@ -318,8 +317,9 @@ public class IdCanvas extends Panel implements ViewportListenerI
      * draw repeating sequence ids until out of sequence data or
      * out of visible space, whichever comes first
      */
-    for (int ypos = hgap, row = av.getRanges().getStartRes(); (ypos <= getSize().height)
-            && (row < maxwidth); ypos += cHeight, row += rowSize)
+    int ypos = hgap;
+    int row = av.getRanges().getStartRes();
+    while ((ypos <= getHeight()) && (row < maxwidth))
     {
       for (int i = starty; i < alheight; i++)
       {
@@ -339,6 +339,8 @@ public class IdCanvas extends Panel implements ViewportListenerI
         labels.drawComponent(gg, getSize().width);
         gg.translate(0, -ypos - (alheight * avcharHeight));
       }
+      ypos += cHeight;
+      row += rowSize;
     }
   }
 
index 2ebdbba..052c527 100755 (executable)
@@ -404,15 +404,15 @@ public class IdCanvas extends JPanel implements ViewportListenerI
 
     ViewportRanges ranges = av.getRanges();
 
-    int rowSize = ranges.getEndRes() - ranges.getStartRes();
+    int rowSize = ranges.getViewportWidth();
 
     /*
      * draw repeating sequence ids until out of sequence data or
      * out of visible space, whichever comes first
      */
     int ypos = hgap;
-    for (int row = ranges.getStartRes(); (ypos <= getHeight())
-            && (row < maxwidth);)
+    int row = ranges.getStartRes();
+    while ((ypos <= getHeight()) && (row < maxwidth))
     {
       for (int i = starty; i < alheight; i++)
       {