--- old/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java	2017-09-28 16:08:53.000000000 +0100
+++ new/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java	2017-09-28 16:08:53.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))