diff --git a/atom/browser/ui/tray_icon_cocoa.mm b/atom/browser/ui/tray_icon_cocoa.mm index ab1c00742522..6c2def356cd1 100644 --- a/atom/browser/ui/tray_icon_cocoa.mm +++ b/atom/browser/ui/tray_icon_cocoa.mm @@ -33,7 +33,7 @@ const CGFloat kVerticalTitleMargin = 2; base::scoped_nsobject title_; base::scoped_nsobject attributedTitle_; base::scoped_nsobject statusItem_; - NSTrackingArea *trackingArea_; + base::scoped_nsobject trackingArea_; } @end // @interface StatusItemView @@ -62,11 +62,11 @@ const CGFloat kVerticalTitleMargin = 2; [self updateDimensions]; // Add NSTrackingArea for listening to mouseEnter, mouseExit, and mouseMove events - trackingArea_ = [[[NSTrackingArea alloc] + trackingArea_.reset([[NSTrackingArea alloc] initWithRect:[self bounds] options:NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingActiveAlways owner:self - userInfo:nil] autorelease]; + userInfo:nil]); [self addTrackingArea:trackingArea_]; } return self; @@ -80,7 +80,10 @@ const CGFloat kVerticalTitleMargin = 2; - (void)removeItem { // Turn off tracking events to prevent crash - [self removeTrackingArea:trackingArea_]; + if (trackingArea_) { + [self removeTrackingArea:trackingArea_]; + trackingArea_.reset(); + } [[NSStatusBar systemStatusBar] removeStatusItem:statusItem_]; statusItem_.reset(); }