JAL-3210 Improvements to eclipse detection. New src tree and SwingJS updated from...
[jalview.git] / src / jalview / gui / AppVarna.java
index aad4a96..bb4528f 100644 (file)
@@ -80,11 +80,11 @@ public class AppVarna extends JInternalFrame
    * Lookup for sequence and annotation mapped to each RNA in the viewer. Using
    * a linked hashmap means that order is preserved when saved to the project.
    */
-  private Map<RNA, RnaModel> models = new LinkedHashMap<RNA, RnaModel>();
+  private Map<RNA, RnaModel> models = new LinkedHashMap<>();
 
-  private Map<RNA, ShiftList> offsets = new Hashtable<RNA, ShiftList>();
+  private Map<RNA, ShiftList> offsets = new Hashtable<>();
 
-  private Map<RNA, ShiftList> offsetsInv = new Hashtable<RNA, ShiftList>();
+  private Map<RNA, ShiftList> offsetsInv = new Hashtable<>();
 
   private JSplitPane split;
 
@@ -428,15 +428,28 @@ public class AppVarna extends JInternalFrame
     {
       return;
     }
-    if (seqsel != null && seqsel.getSize() > 0)
+
+    RnaModel rnaModel = models.get(rna);
+
+    if (seqsel != null && seqsel.getSize() > 0
+            && seqsel.contains(rnaModel.seq))
     {
       int start = seqsel.getStartRes(), end = seqsel.getEndRes();
-      ShiftList shift = offsets.get(rna);
-      if (shift != null)
+      if (rnaModel.gapped)
+      {
+        ShiftList shift = offsets.get(rna);
+        if (shift != null)
+        {
+          start = shift.shift(start);
+          end = shift.shift(end);
+        }
+      }
+      else
       {
-        start = shift.shift(start);
-        end = shift.shift(end);
+        start = rnaModel.seq.findPosition(start) - rnaModel.seq.getStart();
+        end = rnaModel.seq.findPosition(end) - rnaModel.seq.getStart();
       }
+
       selectionHighlighter.highlightRegion(rna, start, end);
       selectionHighlighter.getLastHighlight()
               .setOutlineColor(seqsel.getOutlineColour());