JAL-2674 add bounds to findHiddenRegionPositions
[jalview.git] / src / jalview / appletgui / ScalePanel.java
index 1737c01..e00db7c 100755 (executable)
@@ -44,8 +44,8 @@ import java.awt.event.MouseMotionListener;
 import java.beans.PropertyChangeEvent;
 import java.util.List;
 
-public class ScalePanel extends Panel implements MouseMotionListener,
-        MouseListener, ViewportListenerI
+public class ScalePanel extends Panel
+        implements MouseMotionListener, MouseListener, ViewportListenerI
 {
 
   protected int offy = 4;
@@ -95,7 +95,8 @@ public class ScalePanel extends Panel implements MouseMotionListener,
 
     min = res;
     max = res;
-    if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
+    if ((evt.getModifiers()
+            & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
     {
       rightMouseButtonPressed(evt, res);
     }
@@ -140,7 +141,7 @@ public class ScalePanel extends Panel implements MouseMotionListener,
       sg.setStartRes(min);
       sg.setEndRes(max);
     }
-    ap.paintAlignment(true);
+    ap.paintAlignment(false);
     av.sendSelection();
   }
 
@@ -157,7 +158,8 @@ public class ScalePanel extends Panel implements MouseMotionListener,
     PopupMenu pop = new PopupMenu();
     if (reveal != null)
     {
-      MenuItem item = new MenuItem(MessageManager.getString("label.reveal"));
+      MenuItem item = new MenuItem(
+              MessageManager.getString("label.reveal"));
       item.addActionListener(new ActionListener()
       {
         @Override
@@ -166,10 +168,6 @@ public class ScalePanel extends Panel implements MouseMotionListener,
           av.showColumn(reveal[0]);
           reveal = null;
           ap.paintAlignment(true);
-          if (ap.overviewPanel != null)
-          {
-            ap.overviewPanel.updateOverviewImage();
-          }
           av.sendSelection();
         }
       });
@@ -186,10 +184,6 @@ public class ScalePanel extends Panel implements MouseMotionListener,
             av.showAllHiddenColumns();
             reveal = null;
             ap.paintAlignment(true);
-            if (ap.overviewPanel != null)
-            {
-              ap.overviewPanel.updateOverviewImage();
-            }
             av.sendSelection();
           }
         });
@@ -208,18 +202,13 @@ public class ScalePanel extends Panel implements MouseMotionListener,
         public void actionPerformed(ActionEvent e)
         {
           av.hideColumns(res, res);
-          if (av.getSelectionGroup() != null
-                  && av.getSelectionGroup().getSize() == av.getAlignment()
-                          .getHeight())
+          if (av.getSelectionGroup() != null && av.getSelectionGroup()
+                  .getSize() == av.getAlignment().getHeight())
           {
             av.setSelectionGroup(null);
           }
 
           ap.paintAlignment(true);
-          if (ap.overviewPanel != null)
-          {
-            ap.overviewPanel.updateOverviewImage();
-          }
           av.sendSelection();
         }
       });
@@ -350,9 +339,15 @@ public class ScalePanel extends Panel implements MouseMotionListener,
   @Override
   public void paint(Graphics g)
   {
-    drawScale(g, av.getRanges().getStartRes(), av.getRanges().getEndRes(),
-            getSize().width,
-            getSize().height);
+    /*
+     * shouldn't get called in wrapped mode as the scale above is
+     * drawn instead by SeqCanvas.drawNorthScale
+     */
+    if (!av.getWrapAlignment())
+    {
+      drawScale(g, av.getRanges().getStartRes(), av.getRanges().getEndRes(),
+              getSize().width, getSize().height);
+    }
   }
 
   // scalewidth will normally be screenwidth,
@@ -441,21 +436,19 @@ public class ScalePanel extends Panel implements MouseMotionListener,
       if (av.getShowHiddenMarkers())
       {
         int widthx = 1 + endx - startx;
-        List<Integer> positions = hidden.findHiddenRegionPositions();
+        List<Integer> positions = hidden.findHiddenRegionPositions(startx,
+                startx + widthx + 1);
         for (int pos : positions)
         {
-
           res = pos - startx;
 
-          if (res < 0 || res > widthx)
-          {
-            continue;
-          }
-
-          gg.fillPolygon(new int[] {
-              -1 + res * avCharWidth - avcharHeight / 4,
-              -1 + res * avCharWidth + avcharHeight / 4,
-              -1 + res * avCharWidth }, new int[] { y, y, y + 2 * yOf }, 3);
+          gg.fillPolygon(
+                  new int[]
+                  { -1 + res * avCharWidth - avcharHeight / 4,
+                      -1 + res * avCharWidth + avcharHeight / 4,
+                      -1 + res * avCharWidth },
+                  new int[]
+                  { y, y, y + 2 * yOf }, 3);
         }
       }
     }