Optimise switch to fastPaint
authoramwaterhouse <Andrew Waterhouse>
Thu, 8 Sep 2005 15:49:27 +0000 (15:49 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 8 Sep 2005 15:49:27 +0000 (15:49 +0000)
src/jalview/gui/AlignmentPanel.java

index 19f50d0..fae6dfc 100755 (executable)
@@ -304,10 +304,18 @@ public class AlignmentPanel extends GAlignmentPanel
         hscroll.setVisible(!wrap);\r
         idwidthAdjuster.setVisible(!wrap);\r
 \r
-        av.setShowAnnotation(!wrap);\r
-        annotationScroller.setVisible(!wrap);\r
-        annotationSpaceFillerHolder.setVisible(!wrap);\r
-        idSpaceFillerPanel1.setVisible(!wrap);\r
+       if(wrap)\r
+       {\r
+         annotationScroller.setVisible(false);\r
+         annotationSpaceFillerHolder.setVisible(false);\r
+       }\r
+       else if(av.showAnnotation)\r
+       {\r
+         annotationScroller.setVisible(true);\r
+         annotationSpaceFillerHolder.setVisible(true);\r
+       }\r
+\r
+       idSpaceFillerPanel1.setVisible(!wrap);\r
 \r
         repaint();\r
     }\r
@@ -433,6 +441,7 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public void adjustmentValueChanged(AdjustmentEvent evt)\r
     {\r
+\r
         int oldX = av.getStartRes();\r
         int oldY = av.getStartSeq();\r
 \r
@@ -467,21 +476,28 @@ public class AlignmentPanel extends GAlignmentPanel
             overviewPanel.setBoxPosition();\r
         }\r
 \r
-        if (av.getWrapAlignment() || !fastPaint)\r
+        int xShift = av.getStartRes() - oldX;\r
+        int yShift = av.getStartSeq() - oldY;\r
+\r
+        if ( (xShift == 0 && yShift == 0) ||\r
+            (Math.abs(xShift) > av.getEndRes() - av.getStartRes()\r
+             || Math.abs(yShift) > av.getEndSeq() - av.getStartSeq())\r
+             || av.getWrapAlignment()\r
+             || !fastPaint)\r
         {\r
-            repaint();\r
+          // Either no shift at all, or shift greater than visible amount\r
+          repaint();\r
         }\r
         else\r
         {\r
-            idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY);\r
-            seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX,\r
-                av.getStartSeq() - oldY);\r
+            idPanel.idCanvas.fastPaint(yShift);\r
+            seqPanel.seqCanvas.fastPaint(xShift, yShift);\r
 \r
             scalePanel.repaint();\r
 \r
             if (av.getShowAnnotation())\r
             {\r
-                annotationPanel.fastPaint(av.getStartRes() - oldX);\r
+                annotationPanel.fastPaint(xShift);\r
             }\r
         }\r
     }\r