--- core.orig/gui/Source/NSView.m 2006-05-28 18:18:09.000000000 -0700 +++ core/gui/Source/NSView.m 2006-05-30 11:24:52.000000000 -0700 @@ -2629,7 +2629,7 @@ if (count > 0) { GSTrackingRect *rects[count]; - NSPoint loc = [_window mouseLocationOutsideOfEventStream]; + NSPoint loc = ((struct NSWindow_struct *)_window)->_lastPoint; unsigned i; [_cursor_rects getObjects: rects]; @@ -2639,7 +2639,7 @@ GSTrackingRect *r = rects[i]; if (NSMouseInRect(loc, r->rectangle, NO)) { - [[r owner] mouseExited: nil]; + [r->owner mouseExited: nil]; } [r invalidate]; } --- core.orig/gui/Source/NSWindow.m 2006-05-28 18:18:09.000000000 -0700 +++ core/gui/Source/NSWindow.m 2006-05-30 11:28:02.000000000 -0700 @@ -2344,25 +2345,7 @@ { if (((NSViewPtr)aView)->_rFlags.valid_rects) { - unsigned count = [((NSViewPtr)aView)->_cursor_rects count]; - if (count > 0) - { - GSTrackingRect *rects[count]; - unsigned i; - - [((NSViewPtr)aView)->_cursor_rects getObjects: rects]; - - for (i = 0; i < count; ++i) - { - GSTrackingRect *r = rects[i]; - if (NSMouseInRect(_lastPoint, r->rectangle, NO)) - { - [[r owner] mouseExited: nil]; - } - [r invalidate]; - } - } - ((NSViewPtr)aView)->_rFlags.valid_rects = 0; + [aView discardCursorRects]; if (_f.cursor_rects_valid) {