Skip to content

Commit 0366592

Browse files
committed
Update ViewList.ID.Views
1 parent 409ef4d commit 0366592

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

Sources/OpenSwiftUICore/View/Input/ViewList.swift

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,6 @@ public struct _ViewList_ID: Hashable {
787787
package let count: Int
788788

789789
package init(_ views: [Views], isDataDependent: Bool) {
790-
// FIXME
791790
var offset = 0
792791
var result: [(views: Views, endOffset: Int)] = []
793792
for view in views {
@@ -802,11 +801,27 @@ public struct _ViewList_ID: Hashable {
802801
override package var endIndex: Int { count }
803802

804803
override package subscript(index: Int) -> ViewList.ID {
805-
preconditionFailure("TODO")
804+
// FIXME: targetIndex
805+
let targetIndex = 0
806+
807+
return views[targetIndex].views[index]
806808
}
807809

808-
override package func isEqual(to other: _ViewList_ID.Views) -> Bool {
809-
preconditionFailure("TODO")
810+
override package func isEqual(to other: ViewList.ID.Views) -> Bool {
811+
guard let other = other as? JoinedViews,
812+
count == other.count
813+
else {
814+
return false
815+
}
816+
guard !views.isEmpty else {
817+
return true
818+
}
819+
for index in views.indices {
820+
guard views[index].views.isEqual(to: other.views[index].views) else {
821+
return false
822+
}
823+
}
824+
return true
810825
}
811826
}
812827
}
@@ -815,7 +830,7 @@ public struct _ViewList_ID: Hashable {
815830
@available(*, unavailable)
816831
extension _ViewList_ID: Sendable {}
817832

818-
// MARK: - ViewList.ID.View
833+
// MARK: - ViewList.ID.Views
819834

820835
@_spi(ForOpenSwiftUIOnly)
821836
open class _ViewList_ID_Views: RandomAccessCollection, Equatable {
@@ -834,7 +849,11 @@ open class _ViewList_ID_Views: RandomAccessCollection, Equatable {
834849
}
835850

836851
package func withDataDependency() -> ViewList.ID.Views {
837-
ViewList.ID._Views(self, isDataDependent: true)
852+
if isDataDependent {
853+
self
854+
} else {
855+
ViewList.ID._Views(self, isDataDependent: true)
856+
}
838857
}
839858

840859
public static func == (lhs: _ViewList_ID_Views, rhs: _ViewList_ID_Views) -> Bool {

0 commit comments

Comments
 (0)