From 322bdd75404ee2f44fb88c6060d311b219237084 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Apr 2026 00:09:27 +0800 Subject: [PATCH 1/6] Update Event API --- Sources/OpenGestures/Event/Event.swift | 40 ++++++------- Sources/OpenGestures/Event/EventID.swift | 20 +++++++ Sources/OpenGestures/Event/EventPhase.swift | 9 --- Sources/OpenGestures/Event/ScrollEvent.swift | 56 +++++++++++++++++++ Sources/OpenGestures/Event/SpatialEvent.swift | 15 +++++ .../Util/LocationContaining.swift | 21 +++++-- 6 files changed, 125 insertions(+), 36 deletions(-) create mode 100644 Sources/OpenGestures/Event/EventID.swift delete mode 100644 Sources/OpenGestures/Event/EventPhase.swift create mode 100644 Sources/OpenGestures/Event/ScrollEvent.swift create mode 100644 Sources/OpenGestures/Event/SpatialEvent.swift diff --git a/Sources/OpenGestures/Event/Event.swift b/Sources/OpenGestures/Event/Event.swift index b5239a9..f0b3292 100644 --- a/Sources/OpenGestures/Event/Event.swift +++ b/Sources/OpenGestures/Event/Event.swift @@ -1,34 +1,30 @@ -public import OpenCoreGraphicsShims +// +// Event.swift +// OpenGestures +// +// Audited for 9126.1.5 +// Status: Complete // MARK: - Event -/// A protocol representing an input event. -public protocol Event: Sendable { +public protocol Event: Identifiable { var id: EventID { get } var phase: EventPhase { get } + var timestamp: Timestamp { get } } -/// A spatial event with a location. -public protocol SpatialEvent: Event { - var location: CGPoint { get } -} +// MARK: - Never + Event -/// A scroll event with delta values. -public protocol ScrollEvent: Event { - var delta: CGVector { get } - var acceleratedDelta: CGVector { get } +extension Never: Event { + public var id: EventID { fatalError() } + public var phase: EventPhase { fatalError() } } -// MARK: - EventID - -public struct EventID: Hashable, Sendable, CustomStringConvertible { - public var rawValue: Int - - public init(rawValue: Int) { - self.rawValue = rawValue - } +// MARK: - EventPhase - public var description: String { - "EventID(\(rawValue))" - } +public enum EventPhase: Hashable { + case began + case active + case ended + case failed } diff --git a/Sources/OpenGestures/Event/EventID.swift b/Sources/OpenGestures/Event/EventID.swift new file mode 100644 index 0000000..4251c2f --- /dev/null +++ b/Sources/OpenGestures/Event/EventID.swift @@ -0,0 +1,20 @@ +// +// EventID.swift +// OpenGestures +// +// Audited for 9126.1.5 +// Status: Complete + +// MARK: - EventID + +public struct EventID: Hashable, CustomStringConvertible { + public let rawValue: Int + + public init(rawValue: Int) { + self.rawValue = rawValue + } + + public var description: String { + rawValue.description + } +} diff --git a/Sources/OpenGestures/Event/EventPhase.swift b/Sources/OpenGestures/Event/EventPhase.swift deleted file mode 100644 index 1d6f5f8..0000000 --- a/Sources/OpenGestures/Event/EventPhase.swift +++ /dev/null @@ -1,9 +0,0 @@ -// MARK: - EventPhase - -/// The phase of an input event. -public enum EventPhase: Hashable, Sendable { - case began - case active - case ended - case failed -} diff --git a/Sources/OpenGestures/Event/ScrollEvent.swift b/Sources/OpenGestures/Event/ScrollEvent.swift new file mode 100644 index 0000000..e84ccbf --- /dev/null +++ b/Sources/OpenGestures/Event/ScrollEvent.swift @@ -0,0 +1,56 @@ +// +// ScrollEvent.swift +// OpenGestures +// +// Audited for 9126.1.5 +// Status: Complete + +#if canImport(Darwin) +import OpenCoreGraphicsShims +#else +package import OpenCoreGraphicsShims +#endif + +// MARK: - ScrollEvent + +/// A scroll event with delta values. +public protocol ScrollEvent: SpatialEvent { + var delta: CGVector { get } + var acceleratedDelta: CGVector { get } +} + +// MARK: - Never + ScrollEvent + +extension Never: ScrollEvent { + public var delta: CGVector { fatalError() } + public var acceleratedDelta: CGVector { fatalError() } +} + +// MARK: - ConcreteScrollEvent + +public struct ConcreteScrollEvent: ScrollEvent { + public var id: EventID + public var phase: EventPhase + public var timestamp: Timestamp + public var location: CGPoint + public var delta: CGVector + public var acceleratedDelta: CGVector + + public init( + id: EventID, + phase: EventPhase, + timestamp: Timestamp, + location: CGPoint, + delta: CGVector, + acceleratedDelta: CGVector + ) { + self.id = id + self.phase = phase + self.timestamp = timestamp + self.location = location + self.delta = delta + self.acceleratedDelta = acceleratedDelta + } +} + +extension ConcreteScrollEvent: NestedCustomStringConvertible {} diff --git a/Sources/OpenGestures/Event/SpatialEvent.swift b/Sources/OpenGestures/Event/SpatialEvent.swift new file mode 100644 index 0000000..8ac1053 --- /dev/null +++ b/Sources/OpenGestures/Event/SpatialEvent.swift @@ -0,0 +1,15 @@ +// +// SpatialEvent.swift +// OpenGestures +// +// Audited for 9126.1.5 +// Status: Complete + +// MARK: - SpatialEvent + +/// A spatial event with a location. +public protocol SpatialEvent: Event, LocationContaining {} + +// MARK: - Never + SpatialEvent + +extension Never: SpatialEvent {} diff --git a/Sources/OpenGestures/Util/LocationContaining.swift b/Sources/OpenGestures/Util/LocationContaining.swift index 9e7e71a..c920d30 100644 --- a/Sources/OpenGestures/Util/LocationContaining.swift +++ b/Sources/OpenGestures/Util/LocationContaining.swift @@ -11,18 +11,29 @@ import OpenCoreGraphicsShims package import OpenCoreGraphicsShims #endif -package protocol LocationContaining { +// MARK: - LocationContaining + +public protocol LocationContaining { var location: CGPoint { get } } +// MARK: - CGPoint + LocationContaining + extension CGPoint: LocationContaining { - package var location: CGPoint { + public var location: CGPoint { self } } +// MARK: - Never + LocationContaining + extension Never: LocationContaining { - package var location: CGPoint { - _openGesturesUnreachableCode() - } + public var location: CGPoint { fatalError() } +} + +// MARK: - IdentifiableLocation [WIP] + +package struct IdentifiableLocation where ID: Hashable { + package var id: ID + package var location: CGPoint } From 1d082d61dd3ed63eca6d0f781849579d11cc0145 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Apr 2026 03:09:57 +0800 Subject: [PATCH 2/6] Update TouchEvent --- Sources/OpenGestures/Event/TouchEvent.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Sources/OpenGestures/Event/TouchEvent.swift b/Sources/OpenGestures/Event/TouchEvent.swift index 161a1b8..18c93dd 100644 --- a/Sources/OpenGestures/Event/TouchEvent.swift +++ b/Sources/OpenGestures/Event/TouchEvent.swift @@ -1,8 +1,15 @@ +// +// TouchEvent.swift +// OpenGestures +// +// Audited for 9126.1.5 +// Status: Complete + public import OpenCoreGraphicsShims // MARK: - TouchEvent -public struct TouchEvent: SpatialEvent, Sendable { +public struct TouchEvent: SpatialEvent, Identifiable { public var id: EventID public var phase: EventPhase public var timestamp: Timestamp @@ -15,3 +22,5 @@ public struct TouchEvent: SpatialEvent, Sendable { self.location = location } } + +extension TouchEvent: NestedCustomStringConvertible {} From 6e3c6f57e48f1b8304cff49ef3b19eaf22504977 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Apr 2026 03:10:45 +0800 Subject: [PATCH 3/6] Update Sendable conformance --- Sources/OpenGestures/Event/Event.swift | 2 +- Sources/OpenGestures/Event/EventID.swift | 2 +- Sources/OpenGestures/Event/ScrollEvent.swift | 6 +----- Sources/OpenGestures/Event/TouchEvent.swift | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Sources/OpenGestures/Event/Event.swift b/Sources/OpenGestures/Event/Event.swift index f0b3292..562ac2a 100644 --- a/Sources/OpenGestures/Event/Event.swift +++ b/Sources/OpenGestures/Event/Event.swift @@ -22,7 +22,7 @@ extension Never: Event { // MARK: - EventPhase -public enum EventPhase: Hashable { +public enum EventPhase: Hashable, Sendable { case began case active case ended diff --git a/Sources/OpenGestures/Event/EventID.swift b/Sources/OpenGestures/Event/EventID.swift index 4251c2f..c02d1c8 100644 --- a/Sources/OpenGestures/Event/EventID.swift +++ b/Sources/OpenGestures/Event/EventID.swift @@ -7,7 +7,7 @@ // MARK: - EventID -public struct EventID: Hashable, CustomStringConvertible { +public struct EventID: Hashable, CustomStringConvertible, Sendable { public let rawValue: Int public init(rawValue: Int) { diff --git a/Sources/OpenGestures/Event/ScrollEvent.swift b/Sources/OpenGestures/Event/ScrollEvent.swift index e84ccbf..a85dac9 100644 --- a/Sources/OpenGestures/Event/ScrollEvent.swift +++ b/Sources/OpenGestures/Event/ScrollEvent.swift @@ -5,11 +5,7 @@ // Audited for 9126.1.5 // Status: Complete -#if canImport(Darwin) -import OpenCoreGraphicsShims -#else -package import OpenCoreGraphicsShims -#endif +public import OpenCoreGraphicsShims // MARK: - ScrollEvent diff --git a/Sources/OpenGestures/Event/TouchEvent.swift b/Sources/OpenGestures/Event/TouchEvent.swift index 18c93dd..b63c3cb 100644 --- a/Sources/OpenGestures/Event/TouchEvent.swift +++ b/Sources/OpenGestures/Event/TouchEvent.swift @@ -9,7 +9,7 @@ public import OpenCoreGraphicsShims // MARK: - TouchEvent -public struct TouchEvent: SpatialEvent, Identifiable { +public struct TouchEvent: SpatialEvent, Identifiable, Sendable { public var id: EventID public var phase: EventPhase public var timestamp: Timestamp From 596beb5a7fdbe1569c217774c273f0b763487e9a Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Apr 2026 03:15:36 +0800 Subject: [PATCH 4/6] Update MouseEvent --- Sources/OpenGestures/Event/MouseEvent.swift | 37 ++++++++++++++------ Sources/OpenGestures/Event/ScrollEvent.swift | 4 +-- Sources/OpenGestures/Event/TouchEvent.swift | 4 +-- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/Sources/OpenGestures/Event/MouseEvent.swift b/Sources/OpenGestures/Event/MouseEvent.swift index 9bb9baa..cf590a7 100644 --- a/Sources/OpenGestures/Event/MouseEvent.swift +++ b/Sources/OpenGestures/Event/MouseEvent.swift @@ -1,13 +1,20 @@ +// +// MouseEvent.swift +// OpenGestures +// +// Audited for 9126.1.5 +// Status: Complete + public import OpenCoreGraphicsShims // MARK: - MouseEvent -public struct MouseEvent: SpatialEvent, Sendable { - public var id: EventID - public var phase: EventPhase - public var timestamp: Timestamp - public var location: CGPoint - public var button: Button +public struct MouseEvent: SpatialEvent, NestedCustomStringConvertible, Sendable { + public let id: EventID + public let phase: EventPhase + public let timestamp: Timestamp + public let location: CGPoint + public let button: Button public init(id: EventID, phase: EventPhase, timestamp: Timestamp, location: CGPoint, button: Button) { self.id = id @@ -17,9 +24,19 @@ public struct MouseEvent: SpatialEvent, Sendable { self.button = button } - public enum Button: Hashable, Sendable { - case primary - case secondary - case tertiary + // MARK: - Button + + public struct Button: RawRepresentable, Sendable { + public let rawValue: Int + + public init(rawValue: Int) { + self.rawValue = rawValue + } + + public static let primary = Button(rawValue: 1) + + public static let secondary = Button(rawValue: 2) + + public static let tertiary = Button(rawValue: 3) } } diff --git a/Sources/OpenGestures/Event/ScrollEvent.swift b/Sources/OpenGestures/Event/ScrollEvent.swift index a85dac9..daeac3d 100644 --- a/Sources/OpenGestures/Event/ScrollEvent.swift +++ b/Sources/OpenGestures/Event/ScrollEvent.swift @@ -24,7 +24,7 @@ extension Never: ScrollEvent { // MARK: - ConcreteScrollEvent -public struct ConcreteScrollEvent: ScrollEvent { +public struct ConcreteScrollEvent: ScrollEvent, NestedCustomStringConvertible, Sendable { public var id: EventID public var phase: EventPhase public var timestamp: Timestamp @@ -48,5 +48,3 @@ public struct ConcreteScrollEvent: ScrollEvent { self.acceleratedDelta = acceleratedDelta } } - -extension ConcreteScrollEvent: NestedCustomStringConvertible {} diff --git a/Sources/OpenGestures/Event/TouchEvent.swift b/Sources/OpenGestures/Event/TouchEvent.swift index b63c3cb..0c634f5 100644 --- a/Sources/OpenGestures/Event/TouchEvent.swift +++ b/Sources/OpenGestures/Event/TouchEvent.swift @@ -9,7 +9,7 @@ public import OpenCoreGraphicsShims // MARK: - TouchEvent -public struct TouchEvent: SpatialEvent, Identifiable, Sendable { +public struct TouchEvent: SpatialEvent, NestedCustomStringConvertible, Sendable { public var id: EventID public var phase: EventPhase public var timestamp: Timestamp @@ -22,5 +22,3 @@ public struct TouchEvent: SpatialEvent, Identifiable, Sendable { self.location = location } } - -extension TouchEvent: NestedCustomStringConvertible {} From d0f61f78b8619a213ded5a547ded5b9e80e3d8af Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Apr 2026 03:26:58 +0800 Subject: [PATCH 5/6] Add Event API compatibility tests --- .../Event/EventIDCompatibilityTests.swift | 16 ++++ .../Event/MouseEventCompatibilityTests.swift | 88 +++++++++++++++++++ .../Event/ScrollEventCompatibilityTests.swift | 84 ++++++++++++++++++ .../Event/TouchEventCompatibilityTests.swift | 70 +++++++++++++++ 4 files changed, 258 insertions(+) create mode 100644 Tests/OpenGesturesCompatibilityTests/Event/EventIDCompatibilityTests.swift create mode 100644 Tests/OpenGesturesCompatibilityTests/Event/MouseEventCompatibilityTests.swift create mode 100644 Tests/OpenGesturesCompatibilityTests/Event/ScrollEventCompatibilityTests.swift create mode 100644 Tests/OpenGesturesCompatibilityTests/Event/TouchEventCompatibilityTests.swift diff --git a/Tests/OpenGesturesCompatibilityTests/Event/EventIDCompatibilityTests.swift b/Tests/OpenGesturesCompatibilityTests/Event/EventIDCompatibilityTests.swift new file mode 100644 index 0000000..a96cedc --- /dev/null +++ b/Tests/OpenGesturesCompatibilityTests/Event/EventIDCompatibilityTests.swift @@ -0,0 +1,16 @@ +// +// EventIDCompatibilityTests.swift +// OpenGesturesCompatibilityTests + +import Testing + +struct EventIDCompatibilityTests { + @Test(arguments: [ + (EventID(rawValue: 0), "0"), + (EventID(rawValue: 42), "42"), + (EventID(rawValue: -1), "-1"), + ]) + func description(_ id: EventID, _ expected: String) { + #expect(id.description == expected) + } +} diff --git a/Tests/OpenGesturesCompatibilityTests/Event/MouseEventCompatibilityTests.swift b/Tests/OpenGesturesCompatibilityTests/Event/MouseEventCompatibilityTests.swift new file mode 100644 index 0000000..6243ab2 --- /dev/null +++ b/Tests/OpenGesturesCompatibilityTests/Event/MouseEventCompatibilityTests.swift @@ -0,0 +1,88 @@ +// +// MouseEventCompatibilityTests.swift +// OpenGesturesCompatibilityTests + +import OpenCoreGraphicsShims +import Testing + +struct MouseEventCompatibilityTests { + @Test + func initAndProperties() { + let event = MouseEvent( + id: EventID(rawValue: 7), + phase: .began, + timestamp: Timestamp(value: .seconds(1)), + location: CGPoint(x: 10, y: 20), + button: .primary + ) + #expect(event.id == EventID(rawValue: 7)) + #expect(event.phase == .began) + #expect(event.timestamp == Timestamp(value: .seconds(1))) + #expect(event.location == CGPoint(x: 10, y: 20)) + #expect(event.button.rawValue == 1) + } + + @Test(arguments: [ + (MouseEvent.Button.primary, 1), + (.secondary, 2), + (.tertiary, 3), + ]) + func buttonRawValues(_ button: MouseEvent.Button, _ expectedRaw: Int) { + #expect(button.rawValue == expectedRaw) + #expect(MouseEvent.Button(rawValue: expectedRaw).rawValue == button.rawValue) + } + + @Test(arguments: [ + (EventID(rawValue: 42), EventPhase.began, MouseEvent.Button.primary, #""" + MouseEvent <42> { \#("") + id: 42 + phase: began + timestamp: 1.0 seconds + location: (10.0, 20.0) + button: Button(rawValue: 1) + } + """#), + (EventID(rawValue: 7), .active, .secondary, #""" + MouseEvent <7> { \#("") + id: 7 + phase: active + timestamp: 1.0 seconds + location: (10.0, 20.0) + button: Button(rawValue: 2) + } + """#), + (EventID(rawValue: 100), .ended, .tertiary, #""" + MouseEvent <100> { \#("") + id: 100 + phase: ended + timestamp: 1.0 seconds + location: (10.0, 20.0) + button: Button(rawValue: 3) + } + """#), + (EventID(rawValue: -1), .failed, .primary, #""" + MouseEvent <-1> { \#("") + id: -1 + phase: failed + timestamp: 1.0 seconds + location: (10.0, 20.0) + button: Button(rawValue: 1) + } + """#), + ]) + func description( + _ id: EventID, + _ phase: EventPhase, + _ button: MouseEvent.Button, + _ expected: String + ) { + let event = MouseEvent( + id: id, + phase: phase, + timestamp: Timestamp(value: .seconds(1)), + location: CGPoint(x: 10, y: 20), + button: button + ) + #expect(String(describing: event) == expected) + } +} diff --git a/Tests/OpenGesturesCompatibilityTests/Event/ScrollEventCompatibilityTests.swift b/Tests/OpenGesturesCompatibilityTests/Event/ScrollEventCompatibilityTests.swift new file mode 100644 index 0000000..fd421a8 --- /dev/null +++ b/Tests/OpenGesturesCompatibilityTests/Event/ScrollEventCompatibilityTests.swift @@ -0,0 +1,84 @@ +// +// ScrollEventCompatibilityTests.swift +// OpenGesturesCompatibilityTests + +import OpenCoreGraphicsShims +import Testing + +struct ScrollEventCompatibilityTests { + @Test + func initAndProperties() { + let event = ConcreteScrollEvent( + id: EventID(rawValue: 11), + phase: .ended, + timestamp: Timestamp(value: .seconds(4)), + location: CGPoint(x: 50, y: 60), + delta: CGVector(dx: 1, dy: 2), + acceleratedDelta: CGVector(dx: 3, dy: 4) + ) + #expect(event.id == EventID(rawValue: 11)) + #expect(event.phase == .ended) + #expect(event.timestamp == Timestamp(value: .seconds(4))) + #expect(event.location == CGPoint(x: 50, y: 60)) + #expect(event.delta == CGVector(dx: 1, dy: 2)) + #expect(event.acceleratedDelta == CGVector(dx: 3, dy: 4)) + } + + @Test(arguments: [ + (EventID(rawValue: 1), EventPhase.began, #""" + ConcreteScrollEvent <1> { \#("") + id: 1 + phase: began + timestamp: 1.0 seconds + location: (0.0, 0.0) + delta: (1.0, 2.0) + acceleratedDelta: (3.0, 4.0) + } + """#), + (EventID(rawValue: 11), .active, #""" + ConcreteScrollEvent <11> { \#("") + id: 11 + phase: active + timestamp: 1.0 seconds + location: (0.0, 0.0) + delta: (1.0, 2.0) + acceleratedDelta: (3.0, 4.0) + } + """#), + (EventID(rawValue: 0), .ended, #""" + ConcreteScrollEvent <0> { \#("") + id: 0 + phase: ended + timestamp: 1.0 seconds + location: (0.0, 0.0) + delta: (1.0, 2.0) + acceleratedDelta: (3.0, 4.0) + } + """#), + (EventID(rawValue: -7), .failed, #""" + ConcreteScrollEvent <-7> { \#("") + id: -7 + phase: failed + timestamp: 1.0 seconds + location: (0.0, 0.0) + delta: (1.0, 2.0) + acceleratedDelta: (3.0, 4.0) + } + """#), + ]) + func description( + _ id: EventID, + _ phase: EventPhase, + _ expected: String + ) { + let event = ConcreteScrollEvent( + id: id, + phase: phase, + timestamp: Timestamp(value: .seconds(1)), + location: CGPoint(x: 0, y: 0), + delta: CGVector(dx: 1, dy: 2), + acceleratedDelta: CGVector(dx: 3, dy: 4) + ) + #expect(String(describing: event) == expected) + } +} diff --git a/Tests/OpenGesturesCompatibilityTests/Event/TouchEventCompatibilityTests.swift b/Tests/OpenGesturesCompatibilityTests/Event/TouchEventCompatibilityTests.swift new file mode 100644 index 0000000..5a13d69 --- /dev/null +++ b/Tests/OpenGesturesCompatibilityTests/Event/TouchEventCompatibilityTests.swift @@ -0,0 +1,70 @@ +// +// TouchEventCompatibilityTests.swift +// OpenGesturesCompatibilityTests + +import OpenCoreGraphicsShims +import Testing + +struct TouchEventCompatibilityTests { + @Test + func initAndProperties() { + let event = TouchEvent( + id: EventID(rawValue: 3), + phase: .active, + timestamp: Timestamp(value: .seconds(2)), + location: CGPoint(x: 5, y: 15) + ) + #expect(event.id == EventID(rawValue: 3)) + #expect(event.phase == .active) + #expect(event.timestamp == Timestamp(value: .seconds(2))) + #expect(event.location == CGPoint(x: 5, y: 15)) + } + + @Test(arguments: [ + (EventID(rawValue: 9), EventPhase.began, #""" + TouchEvent <9> { \#("") + id: 9 + phase: began + timestamp: 1.0 seconds + location: (100.0, 200.0) + } + """#), + (EventID(rawValue: 3), .active, #""" + TouchEvent <3> { \#("") + id: 3 + phase: active + timestamp: 1.0 seconds + location: (100.0, 200.0) + } + """#), + (EventID(rawValue: 0), .ended, #""" + TouchEvent <0> { \#("") + id: 0 + phase: ended + timestamp: 1.0 seconds + location: (100.0, 200.0) + } + """#), + (EventID(rawValue: -2), .failed, #""" + TouchEvent <-2> { \#("") + id: -2 + phase: failed + timestamp: 1.0 seconds + location: (100.0, 200.0) + } + """#), + ]) + func description( + _ id: EventID, + _ phase: EventPhase, + _ expected: String + ) { + let event = TouchEvent( + id: id, + phase: phase, + timestamp: Timestamp(value: .seconds(1)), + location: CGPoint(x: 100, y: 200) + ) + #expect(String(describing: event) == expected) + } +} From 6a01ad08f69ee3a44cbf57cc3ee303b666d3eb60 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Apr 2026 03:57:17 +0800 Subject: [PATCH 6/6] Use public import for OpenCoreGraphicsShims in LocationContaining --- Sources/OpenGestures/Util/LocationContaining.swift | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Sources/OpenGestures/Util/LocationContaining.swift b/Sources/OpenGestures/Util/LocationContaining.swift index c920d30..6cf3eb3 100644 --- a/Sources/OpenGestures/Util/LocationContaining.swift +++ b/Sources/OpenGestures/Util/LocationContaining.swift @@ -5,11 +5,7 @@ // Audited for 9126.1.5 // Status: Complete -#if canImport(Darwin) -import OpenCoreGraphicsShims -#else -package import OpenCoreGraphicsShims -#endif +public import OpenCoreGraphicsShims // MARK: - LocationContaining