31 lines
806 B
Swift
31 lines
806 B
Swift
import AppKit
|
|
import SwiftUI
|
|
|
|
private struct PointingHandCursorModifier: ViewModifier {
|
|
@State private var isHovering = false
|
|
|
|
func body(content: Content) -> some View {
|
|
content
|
|
.onHover { hovering in
|
|
guard hovering != self.isHovering else { return }
|
|
self.isHovering = hovering
|
|
if hovering {
|
|
NSCursor.pointingHand.push()
|
|
} else {
|
|
NSCursor.pop()
|
|
}
|
|
}
|
|
.onDisappear {
|
|
guard self.isHovering else { return }
|
|
self.isHovering = false
|
|
NSCursor.pop()
|
|
}
|
|
}
|
|
}
|
|
|
|
extension View {
|
|
func pointingHandCursor() -> some View {
|
|
self.modifier(PointingHandCursorModifier())
|
|
}
|
|
}
|