src/macosx/native/sun/awt/AWTView.m
Print this page
@@ -80,10 +80,11 @@
fEnablePressAndHold = shouldUsePressAndHold();
fInPressAndHold = NO;
fPAHNeedsToSelect = NO;
mouseIsOver = NO;
+ [self resetTrackingArea];
if (windowLayer != nil) {
self.cglLayer = windowLayer;
[self setWantsLayer: YES];
[self.layer addSublayer: (CALayer *)cglLayer];
@@ -144,11 +145,11 @@
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
[[self window] makeFirstResponder: self];
}];
if ([self window] != NULL) {
- [self resetTrackingRect];
+ [self resetTrackingArea];
}
}
- (BOOL) acceptsFirstMouse: (NSEvent *)event {
return YES;
@@ -366,34 +367,36 @@
static JNF_CLASS_CACHE(jc_PlatformView, "sun/lwawt/macosx/CPlatformView");
static JNF_MEMBER_CACHE(jm_deliverMouseEvent, jc_PlatformView, "deliverMouseEvent", "(Lsun/lwawt/macosx/event/NSEvent;)V");
JNFCallVoidMethod(env, m_cPlatformView, jm_deliverMouseEvent, jEvent);
}
-
-- (void) clearTrackingRect {
- if (rolloverTrackingRectTag > 0) {
- [self removeTrackingRect:rolloverTrackingRectTag];
- rolloverTrackingRectTag = 0;
+- (void) resetTrackingArea {
+ if (rolloverTrackingArea != nil) {
+ [self removeTrackingArea:rolloverTrackingArea];
+ [rolloverTrackingArea release];
}
-}
-- (void) resetTrackingRect {
- [self clearTrackingRect];
- rolloverTrackingRectTag = [self addTrackingRect:[self visibleRect]
+ int options = (NSTrackingActiveInActiveApp | NSTrackingCursorUpdate |
+ NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved |
+ NSTrackingEnabledDuringMouseDrag);
+
+ rolloverTrackingArea = [[NSTrackingArea alloc] initWithRect:[self visibleRect]
+ options: options
owner:self
- userData:NULL
- assumeInside:NO];
+ userInfo:nil
+ ];
+ [self addTrackingArea:rolloverTrackingArea];
}
- (void)updateTrackingAreas {
[super updateTrackingAreas];
- [self resetTrackingRect];
+ [self resetTrackingArea];
}
- (void) resetCursorRects {
[super resetCursorRects];
- [self resetTrackingRect];
+ [self resetTrackingArea];
}
-(void) deliverJavaKeyEventHelper: (NSEvent *) event {
static NSEvent* sLastKeyEvent = nil;
if (event == sLastKeyEvent) {