--- a/jdk/src/share/classes/java/awt/EventDispatchThread.java Wed Oct 08 13:01:40 2008 +0400
+++ b/jdk/src/share/classes/java/awt/EventDispatchThread.java Mon Oct 20 19:07:12 2008 -0700
@@ -39,6 +39,7 @@
import java.util.logging.*;
import sun.awt.dnd.SunDragSourceContextPeer;
+import sun.awt.EventQueueDelegate;
/**
* EventDispatchThread is a package-private AWT class which takes
@@ -243,10 +244,16 @@
try {
AWTEvent event;
boolean eventOK;
+ EventQueueDelegate.Delegate delegate =
+ EventQueueDelegate.getDelegate();
do {
- event = (id == ANY_EVENT)
- ? theQueue.getNextEvent()
- : theQueue.getNextEvent(id);
+ if (delegate != null && id == ANY_EVENT) {
+ event = delegate.getNextEvent(theQueue);
+ } else {
+ event = (id == ANY_EVENT)
+ ? theQueue.getNextEvent()
+ : theQueue.getNextEvent(id);
+ }
eventOK = true;
synchronized (eventFilters) {
@@ -272,7 +279,14 @@
eventLog.log(Level.FINEST, "Dispatching: " + event);
}
+ Object handle = null;
+ if (delegate != null) {
+ handle = delegate.beforeDispatch(event);
+ }
theQueue.dispatchEvent(event);
+ if (delegate != null) {
+ delegate.afterDispatch(event, handle);
+ }
return true;
}
catch (ThreadDeath death) {