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;