- // do we want to thread this ? (contention with seqsel and colsel locks, I suspect)
- boolean repaint=false;
- if (av.followSelection)
+ // do we want to thread this ? (contention with seqsel and colsel locks, I
+ // suspect)
+ // rules are: colsel is copied if there is a real intersection between
+ // sequence selection
+ boolean repaint = false, copycolsel = true;
+ // if (!av.isSelectionGroupChanged(false))
+ {
+ SequenceGroup sgroup = null;
+ if (seqsel != null && seqsel.getSize()>0)
+ {
+ if (av.getAlignment() == null)
+ {
+ jalview.bin.Cache.log.warn("alignviewport av SeqSetId="
+ + av.getSequenceSetId() + " ViewId=" + av.getViewId()
+ + " 's alignment is NULL! returning immediatly.");
+ return;
+ }
+ sgroup = seqsel.intersect(av.getAlignment(),
+ (av.hasHiddenRows()) ? av.getHiddenRepSequences() : null);
+ if ((sgroup == null || sgroup.getSize() == 0)
+ || (colsel == null || colsel.size() == 0))
+ {
+ // don't copy columns if the region didn't intersect.
+ copycolsel = false;
+ }
+ }
+ if (sgroup != null && sgroup.getSize() > 0)
+ {
+ av.setSelectionGroup(sgroup);
+ }
+ else
+ {
+ av.setSelectionGroup(null);
+ }
+ av.isSelectionGroupChanged(true);
+ repaint = true;
+ }
+ if (copycolsel)