From d32efd928b0358eca6d36a81163726032aae5de5 Mon Sep 17 00:00:00 2001 From: david-swift Date: Sun, 15 Sep 2024 09:06:25 +0200 Subject: [PATCH] Update properties only if pointer is not nil --- Sources/Model/User Interface/View/Property.swift | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Sources/Model/User Interface/View/Property.swift b/Sources/Model/User Interface/View/Property.swift index c1ff1b9..a17682a 100644 --- a/Sources/Model/User Interface/View/Property.swift +++ b/Sources/Model/User Interface/View/Property.swift @@ -13,7 +13,7 @@ public struct Property: PropertyProtocol { /// The function applying the property to the UI. - public var setProperty: (Pointer?, Value, ViewStorage) -> Void + public var setProperty: (Pointer, Value, ViewStorage) -> Void /// The wrapped value. public var wrappedValue: Value /// The update strategy. @@ -27,7 +27,7 @@ public struct Property: PropertyProtocol { /// - updateStrategy: The update strategy, this should be ``UpdateStrategy/automatic`` in most cases. public init( wrappedValue: Value, - set setProperty: @escaping (Pointer?, Value, ViewStorage) -> Void, + set setProperty: @escaping (Pointer, Value, ViewStorage) -> Void, pointer: Pointer.Type, updateStrategy: UpdateStrategy = .automatic ) { @@ -44,7 +44,7 @@ public struct Property: PropertyProtocol { /// - updateStrategy: The update strategy, this should be ``UpdateStrategy/automatic`` in most cases. public init( wrappedValue: Value, - set setProperty: @escaping (Pointer?, Value) -> Void, + set setProperty: @escaping (Pointer, Value) -> Void, pointer: Pointer.Type, updateStrategy: UpdateStrategy = .automatic ) { @@ -66,7 +66,7 @@ extension Property where Value: OptionalProtocol { /// - pointer: The type of the pointer. /// - updateStrategy: The update strategy, this should be ``UpdateStrategy/automatic`` in most cases. public init( - set setProperty: @escaping (Pointer?, Value.Wrapped, ViewStorage) -> Void, + set setProperty: @escaping (Pointer, Value.Wrapped, ViewStorage) -> Void, pointer: Pointer.Type, updateStrategy: UpdateStrategy = .automatic ) { @@ -86,7 +86,7 @@ extension Property where Value: OptionalProtocol { /// - pointer: The type of the pointer. /// - updateStrategy: The update strategy, this should be ``UpdateStrategy/automatic`` in most cases. public init( - set setProperty: @escaping (Pointer?, Value.Wrapped) -> Void, + set setProperty: @escaping (Pointer, Value.Wrapped) -> Void, pointer: Pointer.Type, updateStrategy: UpdateStrategy = .automatic ) { @@ -110,7 +110,7 @@ protocol PropertyProtocol { /// The wrapped value. var wrappedValue: Value { get } /// Set the property. - var setProperty: (Pointer?, Value, ViewStorage) -> Void { get } + var setProperty: (Pointer, Value, ViewStorage) -> Void { get } /// The update strategy. var updateStrategy: UpdateStrategy { get } @@ -244,7 +244,9 @@ extension Widget { if let optional = property.wrappedValue as? any OptionalProtocol, optional.optionalValue == nil { return } - property.setProperty(storage.pointer as? Property.Pointer, property.wrappedValue, storage) + if let pointer = storage.pointer as? Property.Pointer { + property.setProperty(pointer, property.wrappedValue, storage) + } } }