JAL-2593 don't filter out 'colour by label' features
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 10 Aug 2017 07:52:56 +0000 (08:52 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 10 Aug 2017 07:52:56 +0000 (08:52 +0100)
src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java
test/jalview/renderer/seqfeatures/FeatureRendererTest.java

index 1d09dca..231cfbe 100644 (file)
@@ -993,7 +993,9 @@ public abstract class FeatureRendererModel implements
   /**
    * Removes from the list of features any that have a feature group that is not
    * displayed, or duplicate the location of a feature of the same type (unless
-   * a graduated colour scheme is applied)
+   * a graduated colour scheme or colour by label is applied). Should be used
+   * only for features of the same feature colour (which normally implies the
+   * same feature type).
    * 
    * @param features
    * @param fc
@@ -1006,7 +1008,7 @@ public abstract class FeatureRendererModel implements
       return;
     }
     SequenceFeatures.sortFeatures(features, true);
-    boolean graduated = fc != null && fc.isGraduatedColour();
+    boolean simpleColour = fc == null || fc.isSimpleColour();
     SequenceFeature lastFeature = null;
 
     Iterator<SequenceFeature> it = features.iterator();
@@ -1025,7 +1027,7 @@ public abstract class FeatureRendererModel implements
        * (checking type and isContactFeature as a fail-safe here, although
        * currently they are guaranteed to match in this context)
        */
-      if (!graduated)
+      if (simpleColour)
       {
         if (lastFeature != null && sf.getBegin() == lastFeature.getBegin()
                 && sf.getEnd() == lastFeature.getEnd()
index dc86605..d3cddf9 100644 (file)
@@ -347,17 +347,17 @@ public class FeatureRendererTest
     assertTrue(features.contains(sf5));
 
     /*
-     * filtering of co-located features with colour by label
+     * co-located features with colour by label
+     * should not get filtered
      */
     features = seq.getSequenceFeatures();
     FeatureColour fc = new FeatureColour(Color.black);
     fc.setColourByLabel(true);
     fr.filterFeaturesForDisplay(features, fc);
-    assertEquals(features.size(), 3);
-    assertTrue(features.contains(sf1) || features.contains(sf4));
-    assertFalse(features.contains(sf1) && features.contains(sf4));
-    assertFalse(features.contains(sf2));
+    assertEquals(features.size(), 4);
+    assertTrue(features.contains(sf1));
     assertTrue(features.contains(sf3));
+    assertTrue(features.contains(sf4));
     assertTrue(features.contains(sf5));
   }
 }