From: Jim Procter Date: Wed, 18 Oct 2017 16:12:51 +0000 (+0100) Subject: JAL-2779 patch so closing most recent frame doesn’t transfer focus to oldest frame... X-Git-Tag: Release_2_10_3b1~76^2~7 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=c85e14559052b6f566339dba905b04d315cc6224;p=jalview.git JAL-2779 patch so closing most recent frame doesn’t transfer focus to oldest frame on the stack --- diff --git a/src/jalview/gui/AquaInternalFrameManager.java b/src/jalview/gui/AquaInternalFrameManager.java index a97d8ec..aeb1e5f 100644 --- a/src/jalview/gui/AquaInternalFrameManager.java +++ b/src/jalview/gui/AquaInternalFrameManager.java @@ -57,6 +57,11 @@ import com.apple.laf.AquaInternalFramePaneUI; * Downloaded from * https://raw.githubusercontent.com/frohoff/jdk8u-jdk/master/src/macosx/classes/com/apple/laf/AquaInternalFrameManager.java * + * Patch from Jim Procter - when the most recently opened frame is closed, + * correct behaviour is to go to the next most recent frame, rather than wrap + * around to the bottom of the window stack (as the original implementation + * does) + * * @see com.sun.java.swing.plaf.windows.WindowsDesktopManager */ public class AquaInternalFrameManager extends DefaultDesktopManager @@ -86,7 +91,16 @@ public class AquaInternalFrameManager extends DefaultDesktopManager { if (f == fCurrentFrame) { - activateNextFrame(); + boolean mostRecentFrame = fChildFrames + .indexOf(f) == fChildFrames.size() - 1; + if (!mostRecentFrame) + { + activateNextFrame(); + } + else + { + activatePreviousFrame(); + } } fChildFrames.removeElement(f); super.closeFrame(f);