Files
luma/Luma/CursorOverrideRegion.swift
Ole André Vadla Ravnås 87cd769d7d ui: Fix iOS and macOS Release builds
Wrap CursorOverrideRegion in canImport(AppKit) and provide a no-op
View stub for iOS, which has no AppKit. The call site in
SaveBarOverlay now compiles on both platforms.

Add an explicit empty deinit to CollapsibleVSplitView.Coordinator
to work around an EarlyPerfInliner crash in swift-frontend on
Xcode 26.4 Release builds.
2026-05-14 22:44:41 +02:00

63 lines
1.6 KiB
Swift

import SwiftUI
#if canImport(AppKit)
import AppKit
struct CursorOverrideRegion: NSViewRepresentable {
func makeNSView(context: Context) -> NSView {
CursorOverrideNSView()
}
func updateNSView(_ nsView: NSView, context: Context) {}
}
private final class CursorOverrideNSView: NSView {
private nonisolated(unsafe) var monitor: Any?
override func viewDidMoveToWindow() {
super.viewDidMoveToWindow()
if window != nil {
installMonitor()
} else {
uninstallMonitor()
}
}
deinit {
if let monitor {
NSEvent.removeMonitor(monitor)
}
}
private func installMonitor() {
guard monitor == nil else { return }
monitor = NSEvent.addLocalMonitorForEvents(matching: .mouseMoved) { [weak self] event in
guard let self,
let window = self.window,
event.window === window,
self.convert(self.bounds, to: nil).contains(event.locationInWindow)
else {
return event
}
NSCursor.arrow.set()
return nil
}
}
private func uninstallMonitor() {
if let monitor {
NSEvent.removeMonitor(monitor)
}
monitor = nil
}
override func hitTest(_ point: NSPoint) -> NSView? {
nil
}
}
#else
struct CursorOverrideRegion: View {
var body: some View { Color.clear }
}
#endif