diff --git a/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java b/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java index 11f05b5bc05a753f2ad3df2bc0eadde11afb67b7..61479f6eb874693396db4be296a8387a9a695b3e 100644 --- a/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java +++ b/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java @@ -159,8 +159,6 @@ public class CEmbeddedFrame extends EmbeddedFrame { : this; } } - // ignore focus "lost" native request as it may mistakenly - // deactivate active window (see 8001161) if (globalFocusedWindow == this) { responder.handleWindowFocusEvent(parentWindowActive, null); } @@ -175,4 +173,18 @@ public class CEmbeddedFrame extends EmbeddedFrame { // another window. return globalFocusedWindow != null ? !globalFocusedWindow.isParentWindowActive() : true; } + + public void synthesizeWindowActivation(boolean doActivate) { + if (isParentWindowActive() != doActivate) { + handleWindowFocusEvent(doActivate); + } + } + + public static void updateGlobalFocusedWindow(CEmbeddedFrame newGlobalFocusedWindow) { + synchronized (classLock) { + if (newGlobalFocusedWindow.isParentWindowActive()) { + globalFocusedWindow = newGlobalFocusedWindow; + } + } + } } diff --git a/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java b/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java index ee5d7884b989f097d1826a4a44134c92e5c75c2c..2fbc31e323ce6354a38c75fca71b80a92097d470 100644 --- a/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java @@ -146,6 +146,8 @@ public class CPlatformEmbeddedFrame implements PlatformWindow { @Override public boolean requestWindowFocus() { + CEmbeddedFrame.updateGlobalFocusedWindow(target); + target.synthesizeWindowActivation(true); return true; }