Only dispatch event if it is valid (!= null|0).
--- a/src/sun/awt/peer/cacio/CacioEventPump.java Mon Dec 29 18:20:33 2008 +0100
+++ b/src/sun/awt/peer/cacio/CacioEventPump.java Mon Dec 29 20:10:41 2008 +0100
@@ -71,18 +71,23 @@ class CacioEventPump implements Runnable
AWTAutoShutdown.notifyToolkitThreadBusy();
if (ev != null) {
Object source = ev.getSource();
- if (source instanceof ManagedWindowContainer) {
- ManagedWindowContainer c =
- (ManagedWindowContainer) source;
- c.dispatchEvent(ev);
- } else if (source instanceof CacioComponent) {
- CacioComponent c = (CacioComponent) source;
- ev.setSource(c.getAWTComponent());
- c.handlePeerEvent(ev.createAWTEvent());
- } else if (source instanceof Component) {
- SunToolkit.postEvent(AppContext.getAppContext(),
- ev.createAWTEvent());
+ if (source != null && ev.getId() != 0) {
+ if (source instanceof ManagedWindowContainer) {
+ ManagedWindowContainer c =
+ (ManagedWindowContainer) source;
+ c.dispatchEvent(ev);
+ } else if (source instanceof CacioComponent) {
+ CacioComponent c = (CacioComponent) source;
+ ev.setSource(c.getAWTComponent());
+ c.handlePeerEvent(ev.createAWTEvent());
+ } else if (source instanceof Component) {
+ AWTEvent awtEvent = ev.createAWTEvent();
+ if (awtEvent != null) {
+ SunToolkit.postEvent(AppContext.getAppContext(),
+ ev.createAWTEvent());
+ }
+ }
}
}
} catch (Exception ex) {
--- a/src/sun/awt/peer/cacio/EventData.java Mon Dec 29 18:20:33 2008 +0100
+++ b/src/sun/awt/peer/cacio/EventData.java Mon Dec 29 20:10:41 2008 +0100
@@ -329,7 +329,7 @@ public class EventData {
public void clear() {
id = 0;
- source = 0;
+ source = null;
time = 0L;
modifiers = 0;
x = 0;