--- old/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java 2017-10-03 16:17:29.000000000 +0100 +++ new/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java 2017-10-03 16:17:28.000000000 +0100 @@ -180,11 +180,18 @@ private boolean doRestoreFocus(Component toFocus, Component vetoedComponent, boolean clearOnFailure) { + boolean success = true; if (toFocus != vetoedComponent && toFocus.isShowing() && toFocus.canBeFocusOwner() && - toFocus.requestFocus(false, FocusEvent.Cause.ROLLBACK)) + (success = toFocus.requestFocus(false, FocusEvent.Cause.ROLLBACK))) { return true; } else { + if (!success && getGlobalFocusedWindow() != SunToolkit.getContainingWindow(toFocus)) { + if (toFocus.isShowing() && toFocus.canBeFocusOwner()) { + restoreFocusTo = toFocus; + return true; + } + } Component nextFocus = toFocus.getNextFocusCandidate(); if (nextFocus != null && nextFocus != vetoedComponent && nextFocus.requestFocusInWindow(FocusEvent.Cause.ROLLBACK))