JAL-2435 further adjustments to behaviour in split screen
[jalview.git] / src / jalview / gui / FontChooser.java
index fdf3d2a..547f528 100755 (executable)
@@ -49,6 +49,12 @@ public class FontChooser extends GFontChooser
   Font oldFont;
 
   /*
+   * The font on opening the dialog (to be restored on Cancel)
+   * on the other half of a split frame (if applicable)
+   */
+  Font oldComplementFont;
+
+  /*
    * the state of 'scale protein as cDNA' on opening the dialog
    */
   boolean oldProteinScale;
@@ -114,6 +120,8 @@ public class FontChooser extends GFontChooser
     boolean inSplitFrame = ap.av.getCodingComplement() != null;
     if (inSplitFrame)
     {
+      oldComplementFont = ((AlignViewport) ap.av.getCodingComplement())
+              .getFont();
       scaleAsCdna.setVisible(true);
       scaleAsCdna.setSelected(ap.av.isScaleProteinAsCdna());
       fontAsCdna.setVisible(true);
@@ -217,7 +225,7 @@ public class FontChooser extends GFontChooser
       {
         ap.av.getCodingComplement().setScaleProteinAsCdna(oldProteinScale);
         ap.av.getCodingComplement().setProteinFontAsCdna(oldMirrorFont);
-        ap.av.getCodingComplement().setFont(oldFont, true);
+        ap.av.getCodingComplement().setFont(oldComplementFont, true);
       }
     }
     else if (tp != null)
@@ -308,15 +316,13 @@ public class FontChooser extends GFontChooser
            */
           ap.av.getCodingComplement().setFont(newFont, true);
         }
-        if (fontAsCdna.isSelected() || scaleAsCdna.isSelected())
-        {
-          /*
-           * adjust layout for font change and/or sizing
-           */
-          SplitFrame splitFrame = (SplitFrame) ap.alignFrame
-                  .getSplitViewContainer();
-          splitFrame.repaint();
-        }
+
+        /*
+         * adjust layout for font change / reset / sizing
+         */
+        SplitFrame splitFrame = (SplitFrame) ap.alignFrame
+                .getSplitViewContainer();
+        splitFrame.repaint();
       }
     }
 
@@ -405,8 +411,8 @@ public class FontChooser extends GFontChooser
 
   /**
    * Turn on/off mirroring of font across split frame. If turning on, also
-   * copies the current font across the split frame. If turning off, does not
-   * change fonts.
+   * copies the current font across the split frame. If turning off, restores
+   * the other half of the split frame to its initial font.
    */
   @Override
   protected void mirrorFonts_actionPerformed()
@@ -415,9 +421,14 @@ public class FontChooser extends GFontChooser
     ap.av.setProteinFontAsCdna(selected);
     ap.av.getCodingComplement().setProteinFontAsCdna(selected);
 
-    if (selected)
+    /*
+     * reset other half of split frame if turning option off
+     */
+    if (!selected)
     {
-      changeFont();
+      ap.av.getCodingComplement().setFont(oldComplementFont, true);
     }
+
+    changeFont();
   }
 }