src/macosx/native/sun/awt/AWTView.m

Print this page

        

@@ -59,10 +59,11 @@
 @implementation AWTView
 
 @synthesize _dropTarget;
 @synthesize _dragSource;
 @synthesize cglLayer;
+@synthesize mouseIsOver;
 
 // Note: Must be called on main (AppKit) thread only
 - (id) initWithRect: (NSRect) rect
        platformView: (jobject) cPlatformView
        windowLayer: (CALayer*) windowLayer

@@ -297,18 +298,27 @@
 /**
  * Utility methods and accessors
  */
 
 -(void) deliverJavaMouseEvent: (NSEvent *) event {
+    
+    NSEventType type = [event type];    
+    
+    // check synthesized mouse entered/exited events
+    if((type == NSMouseEntered && mouseIsOver) || (type == NSMouseExited && !mouseIsOver)){
+        return;
+    }else if((type == NSMouseEntered && !mouseIsOver) || (type == NSMouseExited && mouseIsOver)){
+        mouseIsOver = !mouseIsOver;
+    }
+    
     [AWTToolkit eventCountPlusPlus];
 
     JNIEnv *env = [ThreadUtilities getJNIEnv];
 
     NSPoint eventLocation = [event locationInWindow];
     NSPoint localPoint = [self convertPoint: eventLocation fromView: nil];
     NSPoint absP = [NSEvent mouseLocation];
-    NSEventType type = [event type];
 
     // Convert global numbers between Cocoa's coordinate system and Java.
     // TODO: need consitent way for doing that both with global as well as with local coordinates.
     // The reason to do it here is one more native method for getting screen dimension otherwise.