src/share/classes/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.java
Print this page
@@ -29,10 +29,12 @@
import java.awt.Container;
import java.awt.Event;
import java.awt.KeyEventPostProcessor;
import java.awt.Window;
import java.awt.Toolkit;
+
+import sun.awt.AWTAccessor;
import sun.awt.SunToolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
@@ -136,10 +138,17 @@
boolean skip = false;
Toolkit tk = Toolkit.getDefaultToolkit();
if (tk instanceof SunToolkit) {
skip = ev.getWhen() <= ((SunToolkit)tk).getWindowDeactivationTime(winAncestor);
}
+ // We must insure that original source of key event belongs to the same window object as winAncestor.
+ if (!skip) {
+ Component originalSource = AWTAccessor.getKeyEventAccessor()
+ .getOriginalSource(ev);
+ skip = !(originalSource == winAncestor ||
+ SwingUtilities.getWindowAncestor(originalSource) == winAncestor);
+ }
if (menu != null && !skip) {
MenuElement[] path = new MenuElement[2];
path[0] = mbar;
path[1] = menu;