< prev index next >

src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java

Print this page

        

@@ -28,10 +28,12 @@
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowEvent;
 import java.awt.peer.ComponentPeer;
 import java.awt.peer.LightweightPeer;
 import java.lang.ref.WeakReference;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.LinkedList;
 import java.util.Iterator;
 import java.util.ListIterator;
 import java.util.Set;
 

@@ -262,18 +264,33 @@
             if (targetAppContext.isDisposed()) {
                 return false;
             }
             SunToolkit.postEvent(targetAppContext, se);
             if (EventQueue.isDispatchThread()) {
+                if (Thread.currentThread() instanceof EventDispatchThread) {
                 EventDispatchThread edt = (EventDispatchThread)
                     Thread.currentThread();
                 edt.pumpEvents(SentEvent.ID, new Conditional() {
                         public boolean evaluate() {
                             return !se.dispatched && !targetAppContext.isDisposed();
                         }
                     });
             } else {
+                    new Thread() {
+                        @Override
+                        public void run() {
+                            while(!se.dispatched && !targetAppContext.isDisposed()) {
+                                try {
+                                    Thread.sleep(100);
+                                } catch (InterruptedException e) {
+                                    break;
+                                }
+                            }                            
+                        }
+                    }.start();                    
+                }
+            } else {
                 synchronized (se) {
                     while (!se.dispatched && !targetAppContext.isDisposed()) {
                         try {
                             se.wait(1000);
                         } catch (InterruptedException ie) {
< prev index next >