macos: show clickable mouse pointer when hovering over secure input

This only works on macOS 15 because it uses the new `pointerStyle` API.
I don't have the interest to backport this to older macOS versions but
I'm happy to accept a PR if someone else wants to do it.
This commit is contained in:
Mitchell Hashimoto
2024-09-20 09:56:07 -07:00
parent 761223f0f3
commit df24d8e1a6
2 changed files with 26 additions and 0 deletions

View File

@ -39,6 +39,7 @@ struct SecureInputOverlay: View {
.onTapGesture {
isPopover = true
}
.backport.pointerStyle(.link)
.padding(.top, 10)
.padding(.trailing, 10)
.popover(isPresented: $isPopover, arrowEdge: .bottom) {

View File

@ -23,3 +23,28 @@ extension Backport where Content: Scene {
}
}
}
extension Backport where Content: View {
func pointerStyle(_ style: BackportPointerStyle) -> some View {
if #available(macOS 15, *) {
return content.pointerStyle(style.official)
} else {
return content
}
}
enum BackportPointerStyle {
case grabIdle
case grabActive
case link
@available(macOS 15, *)
var official: PointerStyle {
switch self {
case .grabIdle: return .grabIdle
case .grabActive: return .grabActive
case .link: return .link
}
}
}
}