X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FDesktop.java;h=7564dda8f9171496a7fc55727552619dd84cb45a;hb=4bf989253d9dfaaf960a7522e7b4841eb5fe6f84;hp=22280ede00c83a0db953d5ae95c3e5a0e6fdc93c;hpb=d43b22658a3041c6c5c28c0db3d52c648dcf92e9;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 22280ed..7564dda 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -143,7 +143,7 @@ public class Desktop extends jalview.jbgui.GDesktop protected static final String CONFIRM_KEYBOARD_QUIT = "CONFIRM_KEYBOARD_QUIT"; - public static HashMap savingFiles = new HashMap<>(); + public static HashMap savingFiles = new HashMap(); private JalviewChangeSupport changeSupport = new JalviewChangeSupport(); @@ -1924,7 +1924,10 @@ public class Desktop extends jalview.jbgui.GDesktop } // FIXME: ideally should use UI interface API - FeatureSettings viewFeatureSettings = af.featureSettings; + FeatureSettings viewFeatureSettings = (af.featureSettings != null + && af.featureSettings.isOpen()) + ? af.featureSettings + : null; Rectangle fsBounds = af.getFeatureSettingsGeometry(); for (int i = 0; i < size; i++) { @@ -1935,7 +1938,10 @@ public class Desktop extends jalview.jbgui.GDesktop // transfer reference for existing feature settings to new alignFrame if (ap == af.alignPanel) { - newaf.featureSettings = viewFeatureSettings; + if (viewFeatureSettings != null && viewFeatureSettings.fr.ap == ap) + { + newaf.featureSettings = viewFeatureSettings; + } newaf.setFeatureSettingsGeometry(fsBounds); } @@ -1954,8 +1960,17 @@ public class Desktop extends jalview.jbgui.GDesktop addInternalFrame(newaf, af.getTitle(), AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); + // and materialise a new feature settings dialog instance for the new alignframe + // (closes the old as if 'OK' was pressed) + if (ap == af.alignPanel && newaf.featureSettings != null + && newaf.featureSettings.isOpen() + && af.alignPanel.getAlignViewport().isShowSequenceFeatures()) + { + newaf.showFeatureSettingsUI(); + } } + af.featureSettings = null; af.alignPanels.clear(); af.closeMenuItem_actionPerformed(true); @@ -1995,7 +2010,7 @@ public class Desktop extends jalview.jbgui.GDesktop if (gatherThis) { - if (af.featureSettings != null) + if (af.featureSettings != null && af.featureSettings.isOpen()) { if (source.featureSettings == null) { @@ -2015,6 +2030,12 @@ public class Desktop extends jalview.jbgui.GDesktop } } } + // refresh the feature setting UI for the source frame if it exists + if (source.featureSettings != null + && source.featureSettings.isOpen()) + { + source.showFeatureSettingsUI(); + } }