From: Ben Soares Date: Fri, 24 Mar 2023 00:20:30 +0000 (+0000) Subject: Merge branch 'develop' into features/r2_11_2_alphafold/JAL-629 X-Git-Tag: Release_2_11_3_0~14^2~144 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=06379070d6c2267efe3a30926d84c51a48d1cdce;hp=-c;p=jalview.git Merge branch 'develop' into features/r2_11_2_alphafold/JAL-629 --- 06379070d6c2267efe3a30926d84c51a48d1cdce diff --combined src/jalview/gui/Desktop.java index 981a060,1521d0a..0197db7 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@@ -105,6 -105,10 +105,10 @@@ import jalview.api.AlignmentViewPanel import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.bin.Jalview; + import jalview.datamodel.Alignment; + import jalview.datamodel.HiddenColumns; + import jalview.datamodel.Sequence; + import jalview.datamodel.SequenceI; import jalview.gui.ImageExporter.ImageWriterI; import jalview.gui.QuitHandler.QResponse; import jalview.io.BackupFiles; @@@ -799,6 -803,41 +803,41 @@@ public class Desktop extends jalview.jb public void paste() { + // quick patch for JAL-4150 - needs some more work and test coverage + // TODO - unify below and AlignFrame.paste() + // TODO - write tests and fix AlignFrame.paste() which doesn't track if + // clipboard has come from a different alignment window than the one where + // paste has been called! JAL-4151 + + if (Desktop.jalviewClipboard != null) + { + // The clipboard was filled from within Jalview, we must use the + // sequences + // And dataset from the copied alignment + SequenceI[] newseq = (SequenceI[]) Desktop.jalviewClipboard[0]; + // be doubly sure that we create *new* sequence objects. + SequenceI[] sequences = new SequenceI[newseq.length]; + for (int i = 0; i < newseq.length; i++) + { + sequences[i] = new Sequence(newseq[i]); + } + Alignment alignment = new Alignment(sequences); + // dataset is inherited + alignment.setDataset((Alignment) Desktop.jalviewClipboard[1]); + AlignFrame af = new AlignFrame(alignment, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + String newtitle = new String("Copied sequences"); + + if (Desktop.jalviewClipboard[2] != null) + { + HiddenColumns hc = (HiddenColumns) Desktop.jalviewClipboard[2]; + af.viewport.setHiddenColumns(hc); + } + + Desktop.addInternalFrame(af, newtitle, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + + } else { try { Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); @@@ -820,6 -859,7 +859,7 @@@ System.out.println( "Unable to paste alignment from system clipboard:\n" + ex); } + } } /** @@@ -1436,7 -1476,7 +1476,7 @@@ // this will run the shutdownHook but QuitHandler.getQuitResponse() should // not run a second time if gotQuitResponse flag has been set (i.e. user // confirmed quit of some kind). - System.exit(0); + Jalview.exit("Desktop exiting.", 0); } private void storeLastKnownDimensions(String string, Rectangle jc)