--- old/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java 2017-09-23 15:41:07.000000000 +0100 +++ new/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java 2017-09-23 15:41:07.000000000 +0100 @@ -180,11 +180,16 @@ 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)) { + restoreFocusTo = toFocus; + return true; + } Component nextFocus = toFocus.getNextFocusCandidate(); if (nextFocus != null && nextFocus != vetoedComponent && nextFocus.requestFocusInWindow(FocusEvent.Cause.ROLLBACK))