X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2Fseqfeatures%2FFeatureRendererModel.java;h=2324a646e3c616caf8fb930de7d481779109c2f8;hb=442ca8fed9a8cd9a65388c5537ebbbc078b02961;hp=7faf7ea3be7219e0b12b023ac8abcbbdf461c717;hpb=7ff2d35a4c1634a4b55228b4cf43a822928b398c;p=jalview.git diff --git a/src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java b/src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java index 7faf7ea..2324a64 100644 --- a/src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java +++ b/src/jalview/viewmodel/seqfeatures/FeatureRendererModel.java @@ -1157,7 +1157,8 @@ public abstract class FeatureRendererModel /** * Answers a (possibly empty) list of features in this alignment at a position * (or range) which is mappable from the given sequence residue position in a - * mapped alignment. + * mapped alignment. Features are returned in render order of feature type (on + * top last), with order within feature type undefined. * * @param sequence * @param pos @@ -1166,7 +1167,7 @@ public abstract class FeatureRendererModel public List findComplementFeaturesAtResidue(SequenceI sequence, int pos) { SequenceI ds = sequence.getDatasetSequence(); - List result = new ArrayList<>(); + List found = new ArrayList<>(); List mappings = this.av.getAlignment() .getCodonFrame(sequence); @@ -1192,9 +1193,27 @@ public abstract class FeatureRendererModel match.getSequence(), fromRes, toRes); for (SequenceFeature sf : fs) { - if (!result.contains(sf)) + if (!found.contains(sf)) + { + found.add(sf); + } + } + } + } + /* + * sort by renderorder, inefficiently + */ + List result = new ArrayList<>(); + for (String type : renderOrder) + { + for (SequenceFeature sf : found) + { + if (type.equals(sf.getType())) + { + result.add(sf); + if (result.size() == found.size()) { - result.add(sf); + return result; } } }