JAL-2674 working refactor of drawPanel iteration
[jalview.git] / src / jalview / datamodel / HiddenColumns.java
index 2088aba..f8a7f0c 100644 (file)
@@ -1932,7 +1932,7 @@ public class HiddenColumns
 
     private int currentPosition = 0;
 
-    private boolean endsAtHidden = true;
+    private boolean endsAtHidden = false;
 
     VisibleBlocksVisBoundsIterator(int start, int end, boolean usecopy)
     {
@@ -1950,6 +1950,7 @@ public class HiddenColumns
           int hiddenSoFar = 0;
           int visSoFar = 0;
           int maxVisible = end - start;
+          endsAtHidden = false;
 
           // iterate until a region begins within (start,end]
           int i = 0;
@@ -1978,23 +1979,28 @@ public class HiddenColumns
 
             visSoFar += blockEnd - blockStart + 1;
             blockStart = region[1] + 1;
-            blockEnd = end + hiddenSoFar;
+
             hiddenSoFar += region[1] - region[0] + 1;
+            blockEnd = end + hiddenSoFar;
 
             i++;
           }
           if (visSoFar < maxVisible)
           {
             blockEnd = blockStart + maxVisible - visSoFar;
-            int[] contig = new int[] { blockStart,
-                blockEnd };
+            int[] contig = new int[] { blockStart, blockEnd };
             vcontigs.add(contig);
 
-            endsAtHidden = false;
+            if (i < hiddenColumns.size()
+                    && hiddenColumns.get(i)[0] - 1 == blockEnd)
+            {
+              endsAtHidden = true;
+            }
           }
         }
         else
         {
+          // there are no hidden columns, return a single visible contig
           int[] contig = new int[] { start, end };
           vcontigs.add(contig);
           endsAtHidden = false;