import jalview.util.Comparison;
import jalview.util.MappingUtils;
import jalview.util.MessageManager;
+import jalview.util.Platform;
import jalview.viewmodel.AlignmentViewport;
import java.awt.BorderLayout;
private final SequenceAnnotationReport seqARep;
- StringBuffer tooltipText = new StringBuffer();
+ StringBuilder tooltipText = new StringBuilder();
String tmpString;
return;
}
- if (evt.isShiftDown() || evt.isAltDown() || evt.isControlDown())
+ boolean isControlDown = Platform.isControlDown(evt);
+ if (evt.isShiftDown() || isControlDown)
{
- if (evt.isAltDown() || evt.isControlDown())
+ editingSeqs = true;
+ if (isControlDown)
{
groupEditing = true;
}
- editingSeqs = true;
}
else
{
seqARep.appendFeatures(tooltipText, rpos, features,
this.ap.getSeqPanel().seqCanvas.fr.getMinMax());
}
- if (tooltipText.length() == 6) // <html></html>
+ if (tooltipText.length() == 6) // <html>
{
setToolTipText(null);
lastTooltip = null;
* set if av.getSelectionGroup() refers to a group that is defined on the
* alignment view, rather than a transient selection
*/
- private boolean editingDefinedGroup = false; // TODO: refactor to avcontroller or viewModel
+ // private boolean editingDefinedGroup = false; // TODO: refactor to
+ // avcontroller or viewModel
/**
* Set status message in alignment panel
final int res = findRes(evt);
final int seq = findSeq(evt);
oldSeq = seq;
+ needOverviewUpdate = false;
startWrapBlock = wrappedBlock;
&& (res < stretchGroup.getEndRes()))
{
av.setSelectionGroup(stretchGroup);
- editingDefinedGroup = true;
}
else
{
stretchGroup = null;
- editingDefinedGroup = false;
}
}
else if (!stretchGroup.getSequences(null).contains(sequence)
&& (allGroups[i].getEndRes() >= res))
{
stretchGroup = allGroups[i];
- editingDefinedGroup = true;
break;
}
}
}
av.setSelectionGroup(stretchGroup);
-
}
if (evt.isPopupTrigger()) // Mac: mousePressed
return;
}
+ /*
+ * defer right-mouse click handling to mouseReleased on Windows
+ * (where isPopupTrigger() will answer true)
+ * NB isRightMouseButton is also true for Cmd-click on Mac
+ */
+ if (SwingUtilities.isRightMouseButton(evt) && !Platform.isAMac())
+ {
+ return;
+ }
+
if (av.cursorMode)
{
seqCanvas.cursorX = findRes(evt);
sg.setEndRes(res);
sg.addSequence(sequence, false);
av.setSelectionGroup(sg);
- editingDefinedGroup = false;
stretchGroup = sg;
if (av.getConservationSelected())
// always do this - annotation has own state
// but defer colourscheme update until hidden sequences are passed in
boolean vischange = stretchGroup.recalcConservation(true);
- needOverviewUpdate |= vischange && editingDefinedGroup;
+ needOverviewUpdate |= vischange && av.isSelectionDefinedGroup();
if (stretchGroup.cs != null)
{
stretchGroup.cs.alignmentChanged(stretchGroup,
}
PaintRefresher.Refresh(this, av.getSequenceSetId());
ap.paintAlignment(needOverviewUpdate);
- needOverviewUpdate =false;
- editingDefinedGroup = false;
+ needOverviewUpdate = false;
changeEndRes = false;
changeStartRes = false;
stretchGroup = null;
if (res > (stretchGroup.getStartRes() - 1))
{
stretchGroup.setEndRes(res);
- needOverviewUpdate |= editingDefinedGroup;
+ needOverviewUpdate |= av.isSelectionDefinedGroup();
}
}
else if (changeStartRes)
if (res < (stretchGroup.getEndRes() + 1))
{
stretchGroup.setStartRes(res);
- needOverviewUpdate |= editingDefinedGroup;
+ needOverviewUpdate |= av.isSelectionDefinedGroup();
}
}
if (stretchGroup.getSequences(null).contains(nextSeq))
{
stretchGroup.deleteSequence(seq, false);
- needOverviewUpdate |= editingDefinedGroup;
+ needOverviewUpdate |= av.isSelectionDefinedGroup();
}
else
{
}
stretchGroup.addSequence(nextSeq, false);
- needOverviewUpdate |= editingDefinedGroup;
+ needOverviewUpdate |= av.isSelectionDefinedGroup();
}
}
{
if (av.getAlignment() == null)
{
- Cache.log.warn("alignviewport av SeqSetId="
- + av.getSequenceSetId() + " ViewId=" + av.getViewId()
+ Cache.log.warn("alignviewport av SeqSetId=" + av.getSequenceSetId()
+ + " ViewId=" + av.getViewId()
+ " 's alignment is NULL! returning immediately.");
return;
}