diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c index f82c72a7b0..931d64c71b 100644 --- a/gdk/quartz/GdkQuartzView.c +++ b/gdk/quartz/GdkQuartzView.c @@ -266,6 +266,9 @@ if (trackingRect) { [self removeTrackingRect: trackingRect]; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500 + [(NSTrackingArea*)trackingRect release]; +#endif trackingRect = 0; } @@ -472,13 +475,19 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source, { GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (gdk_window->impl); NSRect rect; - +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500 + NSTrackingArea *trackingArea; +#endif + if (!impl || !impl->toplevel) return; if (trackingRect) { [self removeTrackingRect: trackingRect]; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500 + [(NSTrackingArea*)trackingRect release]; +#endif trackingRect = 0; } @@ -490,10 +499,19 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source, */ rect = [self bounds]; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500 + trackingArea = [[NSTrackingArea alloc] initWithRect: rect + options: NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingCursorUpdate | NSTrackingActiveInActiveApp | NSTrackingInVisibleRect | NSTrackingEnabledDuringMouseDrag + owner: self + userInfo: nil]; + [self addTrackingArea: trackingArea]; + trackingRect = (NSInteger)[trackingArea retain]; +#else trackingRect = [self addTrackingRect: rect owner: self userData: nil assumeInside: NO]; +#endif } -(void)viewDidMoveToWindow @@ -509,6 +527,9 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source, if (newWindow == nil && trackingRect) { [self removeTrackingRect: trackingRect]; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500 + [(NSTrackingArea*)trackingRect release]; +#endif trackingRect = 0; } }