X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSplitFrame.java;h=9d521b4b400d80cf57a6ccdd2c973bf5a5b21bb6;hb=ce0d0a188dc7362f95bb966dc4634d58aee8eb28;hp=5bff407860c8fc9bb1738639503bb6e9c5da4d30;hpb=d55d92c783c55dfbb1001134ef4478941af826ad;p=jalview.git diff --git a/src/jalview/gui/SplitFrame.java b/src/jalview/gui/SplitFrame.java index 5bff407..9d521b4 100644 --- a/src/jalview/gui/SplitFrame.java +++ b/src/jalview/gui/SplitFrame.java @@ -29,7 +29,6 @@ import jalview.util.Platform; import jalview.viewmodel.AlignmentViewport; import java.awt.Component; -import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; @@ -43,6 +42,8 @@ import java.util.Map.Entry; import javax.swing.AbstractAction; import javax.swing.InputMap; import javax.swing.JComponent; +import javax.swing.JDesktopPane; +import javax.swing.JInternalFrame; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import javax.swing.event.InternalFrameAdapter; @@ -97,9 +98,9 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI * estimate width and height of SplitFrame; this.getInsets() doesn't seem to * give the full additional size (a few pixels short) */ - int widthFudge = Platform.isAMac() ? MAC_INSETS_WIDTH + int widthFudge = Platform.isAMacAndNotJS() ? MAC_INSETS_WIDTH : WINDOWS_INSETS_WIDTH; - int heightFudge = Platform.isAMac() ? MAC_INSETS_HEIGHT + int heightFudge = Platform.isAMacAndNotJS() ? MAC_INSETS_HEIGHT : WINDOWS_INSETS_HEIGHT; int width = ((AlignFrame) getTopFrame()).getWidth() + widthFudge; int height = ((AlignFrame) getTopFrame()).getHeight() @@ -253,7 +254,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI /* * estimate ratio of (topFrameContent / bottomFrameContent) */ - int insets = Platform.isAMac() ? MAC_INSETS_HEIGHT + int insets = Platform.isAMacAndNotJS() ? MAC_INSETS_HEIGHT : WINDOWS_INSETS_HEIGHT; // allow 3 'rows' for scale, scrollbar, status bar int topHeight = insets + (3 + topCount) * topCharHeight @@ -412,7 +413,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI * Ctrl-W / Cmd-W - close view or window */ KeyStroke key_cmdW = KeyStroke.getKeyStroke(KeyEvent.VK_W, - Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false); + jalview.util.ShortcutKeyMaskExWrapper.getMenuShortcutKeyMaskEx(), false); action = new AbstractAction() { @Override @@ -433,7 +434,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI * Ctrl-T / Cmd-T open new view */ KeyStroke key_cmdT = KeyStroke.getKeyStroke(KeyEvent.VK_T, - Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false); + jalview.util.ShortcutKeyMaskExWrapper.getMenuShortcutKeyMaskEx(), false); AbstractAction action = new AbstractAction() { @Override @@ -539,7 +540,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI topFrame.setDisplayedView(newTopPanel); } - newBottomPanel.av.viewName = newTopPanel.av.viewName; + newBottomPanel.av.setViewName(newTopPanel.av.getViewName()); newTopPanel.av.setCodingComplement(newBottomPanel.av); /* @@ -773,7 +774,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI * Ctrl-F / Cmd-F open Finder dialog, 'focused' on the right alignment */ KeyStroke key_cmdF = KeyStroke.getKeyStroke(KeyEvent.VK_F, - Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false); + jalview.util.ShortcutKeyMaskExWrapper.getMenuShortcutKeyMaskEx(), false); AbstractAction action = new AbstractAction() { @Override @@ -789,4 +790,29 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI }; overrideKeyBinding(key_cmdF, action); } + + /** + * Override to do nothing if triggered from one of the child frames + */ + @Override + public void setSelected(boolean selected) throws PropertyVetoException + { + JDesktopPane desktopPane = getDesktopPane(); + JInternalFrame fr = desktopPane == null ? null + : desktopPane.getSelectedFrame(); + if (fr == getTopFrame() || fr == getBottomFrame()) + { + /* + * patch for JAL-3288 (deselecting top/bottom frame closes popup menu); + * it may be possible to remove this method in future + * if the underlying Java behaviour changes + */ + if (selected) + { + moveToFront(); + } + return; + } + super.setSelected(selected); + } }