diff --git a/macos/Sources/Helpers/Backport.swift b/macos/Sources/Helpers/Backport.swift index 2d4eef5ca..c8c6de309 100644 --- a/macos/Sources/Helpers/Backport.swift +++ b/macos/Sources/Helpers/Backport.swift @@ -33,9 +33,9 @@ extension Backport where Content: View { } } - func pointerStyle(_ style: BackportPointerStyle) -> some View { + func pointerStyle(_ style: BackportPointerStyle?) -> some View { if #available(macOS 15, *) { - return content.pointerStyle(style.official) + return content.pointerStyle(style?.official) } else { return content } diff --git a/macos/Sources/Helpers/SplitView/SplitView.Divider.swift b/macos/Sources/Helpers/SplitView/SplitView.Divider.swift index f1a7f666d..83847ff0c 100644 --- a/macos/Sources/Helpers/SplitView/SplitView.Divider.swift +++ b/macos/Sources/Helpers/SplitView/SplitView.Divider.swift @@ -44,15 +44,30 @@ extension SplitView { } } + private var pointerStyle: BackportPointerStyle { + return switch (direction) { + case .horizontal: .resizeLeftRight + case .vertical: .resizeUpDown + } + } + var body: some View { ZStack { Color.clear .frame(width: invisibleWidth, height: invisibleHeight) + .contentShape(Rectangle()) // Makes it hit testable for pointerStyle Rectangle() .fill(color) .frame(width: visibleWidth, height: visibleHeight) } + .backport.pointerStyle(pointerStyle) .onHover { isHovered in + // macOS 15+ we use the pointerStyle helper which is much less + // error-prone versus manual NSCursor push/pop + if #available(macOS 15, *) { + return + } + if (isHovered) { switch (direction) { case .horizontal: