|
|
@@ -4,6 +4,7 @@ import WebKit
|
|
|
/// Titlebar icon control: white/neutral tint (no accent blue), subtle hover and selected backgrounds.
|
|
|
private final class TitlebarIconButton: NSButton {
|
|
|
private var isHovering = false
|
|
|
+ private var hoverTrackingArea: NSTrackingArea?
|
|
|
var isToggleActive = false
|
|
|
|
|
|
override func awakeFromNib() {
|
|
|
@@ -29,13 +30,19 @@ private final class TitlebarIconButton: NSButton {
|
|
|
|
|
|
override func updateTrackingAreas() {
|
|
|
super.updateTrackingAreas()
|
|
|
- trackingAreas.forEach { removeTrackingArea($0) }
|
|
|
- addTrackingArea(NSTrackingArea(
|
|
|
+ // Do NOT remove all tracking areas here: AppKit uses its own tracking area for tooltips.
|
|
|
+ // We only manage our own hover tracking area.
|
|
|
+ if let hoverTrackingArea {
|
|
|
+ removeTrackingArea(hoverTrackingArea)
|
|
|
+ }
|
|
|
+ let area = NSTrackingArea(
|
|
|
rect: bounds,
|
|
|
options: [.activeInKeyWindow, .mouseEnteredAndExited, .inVisibleRect],
|
|
|
owner: self,
|
|
|
userInfo: nil
|
|
|
- ))
|
|
|
+ )
|
|
|
+ hoverTrackingArea = area
|
|
|
+ addTrackingArea(area)
|
|
|
}
|
|
|
|
|
|
override func mouseEntered(with event: NSEvent) {
|