JAl-3187 JAL-3535 JAL-3534 update open feature settings when a different view is...
[jalview.git] / src / jalview / gui / Desktop.java
index 22280ed..ed9ed50 100644 (file)
@@ -1935,7 +1935,9 @@ public class Desktop extends jalview.jbgui.GDesktop
       // transfer reference for existing feature settings to new alignFrame
       if (ap == af.alignPanel)
       {
-        newaf.featureSettings = viewFeatureSettings;
+        newaf.featureSettings = (viewFeatureSettings.fr.ap == ap)
+                ? viewFeatureSettings
+                : null;
         newaf.setFeatureSettingsGeometry(fsBounds);
       }
 
@@ -1954,6 +1956,14 @@ 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.alignPanels.clear();
@@ -1995,7 +2005,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 +2025,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();
+    }
 
   }