// Copyright © 2015 Abhishek Banthia import Cocoa class ReviewView: NSView { private var trackingArea: NSTrackingArea? override func mouseEntered(with event: NSEvent) { super.mouseEntered(with: event) let dismissalButton = subviews.filter({ $0.tag == 55 }).first if let firstMatch = dismissalButton, firstMatch.isHidden { firstMatch.isHidden = false } } override func mouseExited(with event: NSEvent) { super.mouseExited(with: event) let dismissalButton = subviews.filter({ $0.tag == 55 }).first if let firstMatch = dismissalButton, !firstMatch.isHidden { firstMatch.isHidden = true } } override func updateTrackingAreas() { super.updateTrackingAreas() if let trackingArea = self.trackingArea { removeTrackingArea(trackingArea) } let options: NSTrackingArea.Options = [.mouseEnteredAndExited, .activeAlways] let trackingArea = NSTrackingArea(rect: bounds, options: options, owner: self, userInfo: nil) addTrackingArea(trackingArea) } }