JAL-3612 use _last_ drawn colour per feature type in Overview
[jalview.git] / src / jalview / renderer / seqfeatures / FeatureRenderer.java
index 7a92a88..fe80e63 100644 (file)
@@ -112,13 +112,14 @@ public class FeatureRenderer extends FeatureRendererModel
         continue;
       }
 
-      if (av.getShowText())
-      {
-        g.setColor(Color.white);
-        int charOffset = (charWidth - fm.charWidth(s)) / 2;
-        g.drawString(String.valueOf(s),
-                charOffset + (charWidth * (i - start)), pady);
-      }
+      /*
+       * JAL-3045 text is always drawn over features, even if
+       * 'Show Text' is unchecked in the format menu
+       */
+      g.setColor(Color.white);
+      int charOffset = (charWidth - fm.charWidth(s)) / 2;
+      g.drawString(String.valueOf(s),
+              charOffset + (charWidth * (i - start)), pady);
     }
     return true;
   }
@@ -322,7 +323,7 @@ public class FeatureRenderer extends FeatureRendererModel
       List<SequenceFeature> overlaps = seq.getFeatures().findFeatures(
               visiblePositions.getBegin(), visiblePositions.getEnd(), type);
 
-      if (fc.isSimpleColour())
+      if (overlaps.size() > 1 && fc.isSimpleColour())
       {
         filterFeaturesForDisplay(overlaps);
       }
@@ -538,10 +539,15 @@ public class FeatureRenderer extends FeatureRendererModel
         continue;
       }
 
+      /*
+       * find features of this type, and the colour of the _last_ one
+       * (the one that would be drawn on top) that has a colour
+       */
       List<SequenceFeature> overlaps = seq.findFeatures(column, column,
               type);
-      for (SequenceFeature sequenceFeature : overlaps)
+      for (int i = overlaps.size() - 1 ; i >= 0 ; i--)
       {
+        SequenceFeature sequenceFeature = overlaps.get(i);
         if (!featureGroupNotShown(sequenceFeature))
         {
           Color col = getColour(sequenceFeature);