X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fgui%2FSplitFrame.java;h=25dedc5003c42d9f306410d43b7808127cb450bc;hb=f2511dd2e8e37b8e999e924f8a53d150377b21b5;hp=44a97bcf1fc2d78800c7d939af99c79a2054f3e5;hpb=9fa3368723ed450b77baeb02c5eaec33f7668965;p=jalview.git diff --git a/src/jalview/gui/SplitFrame.java b/src/jalview/gui/SplitFrame.java index 44a97bc..25dedc5 100644 --- a/src/jalview/gui/SplitFrame.java +++ b/src/jalview/gui/SplitFrame.java @@ -42,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; @@ -790,11 +792,27 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI } /** - * Override to do nothing - let the embedded AlignFrame's be the selected frame + * Override to do nothing if triggered from one of the child frames */ @Override public void setSelected(boolean selected) throws PropertyVetoException { - // no-op here fixes JAL-3288 (menus close immediately) + 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); } }