X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAquaInternalFrameManager.java;h=aeb1e5feb7b15d735fa616c0c4c6cc209de3b7f2;hb=c85e14559052b6f566339dba905b04d315cc6224;hp=a97d8eccb1ff07cbe81f3772ace8a8c75f413520;hpb=a355ef05782a3d3f284a0960c368315a9cbd0271;p=jalview.git 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);