Skip to content

Commit fb084bb

Browse files
authored
Update ViewGraph init (#175)
* Add RenderUtil.c * Update ViewGraph init method * Update PreferenceBridge * Update ViewGraph init and deint lifecycle * Add RootDisplayList * Fix Linux build warning * Update codecov file
1 parent 23542c4 commit fb084bb

File tree

13 files changed

+512
-261
lines changed

13 files changed

+512
-261
lines changed

.codecov.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ coverage:
66
default:
77
target: auto
88
threshold: 5
9-
patch:
10-
default:
11-
target: auto
12-
threshold: 5
9+
patch: off
10+
# default:
11+
# target: auto
12+
# threshold: 5
1313
ignore:
1414
- Tests

Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,15 +314,23 @@ if useLocalDeps {
314314
package.dependencies += [
315315
.package(path: "../OpenGraph"),
316316
.package(path: "../OpenBox"),
317-
.package(path: "../DarwinPrivateFrameworks"),
318317
]
318+
if attributeGraphCondition || renderBoxCondition {
319+
package.dependencies.append(
320+
.package(path: "../DarwinPrivateFrameworks")
321+
)
322+
}
319323
} else {
320324
package.dependencies += [
321325
// FIXME: on Linux platform: OG contains unsafe build flags which prevents us using version dependency
322326
.package(url: "https://github.com/OpenSwiftUIProject/OpenGraph", branch: "main"),
323327
.package(url: "https://github.com/OpenSwiftUIProject/OpenBox", branch: "main"),
324-
.package(url: "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", branch: "main"),
325328
]
329+
if attributeGraphCondition || renderBoxCondition {
330+
package.dependencies.append(
331+
.package(url: "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", branch: "main")
332+
)
333+
}
326334
}
327335

328336
#if os(macOS)

Sources/OpenSwiftUICore/Data/Preference/PreferenceBridge.swift

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// OpenSwiftUICore
44
//
55
// Audited for iOS 18.0
6-
// Status: Blocked by ViewGraph
6+
// Status: Complete
77
// ID: A9FAE381E99529D5274BA37A9BC9B074 (SwiftUI)
88
// ID: DF57A19C61B44C613EB77C1D47FC679A (SwiftUICore)
99

@@ -31,12 +31,12 @@ package final class PreferenceBridge {
3131
package func invalidate() {
3232
requestedPreferences = PreferenceKeys()
3333
bridgedViewInputs = PropertyList()
34-
// TODO: Blocked by ViewGraph
35-
// for child in children {
36-
// let viewGraph = child.takeRetainedValue()
37-
// viewGraph.setPreferenceBridge(to: nil, isInvalidating: true)
38-
// child.release()
39-
// }
34+
for child in children {
35+
let viewGraph = child.takeRetainedValue()
36+
viewGraph.invalidatePreferenceBridge()
37+
child.release()
38+
}
39+
viewGraph = nil
4040
isValid = false
4141
}
4242

@@ -109,10 +109,11 @@ package final class PreferenceBridge {
109109
}
110110

111111
package func removedStateDidChange() {
112-
// TODO: Blocked by ViewGraph
113-
// for child in children {
114-
// let viewGraph = child.takeUnretainedValue()
115-
// }
112+
for child in children {
113+
let viewGraph = child.takeUnretainedValue()
114+
viewGraph.updateRemovedState()
115+
child.release()
116+
}
116117
}
117118

118119
#if canImport(Darwin)

Sources/OpenSwiftUICore/Graph/GraphHost.swift

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
//
55
// Audited for iOS 18.0
66
// Status: Blocked by transactions
7-
// ID: 30C09FF16BC95EC5173809B57186CAC3 (RELEASE_2021)
8-
// ID: F9F204BD2F8DB167A76F17F3FB1B3335 (RELEASE_2024)
7+
// ID: 30C09FF16BC95EC5173809B57186CAC3 (SwiftUI)
8+
// ID: F9F204BD2F8DB167A76F17F3FB1B3335 (SwiftUICore)
99

1010
import OpenSwiftUI_SPI
1111
package import OpenGraphShims
@@ -329,7 +329,38 @@ extension GraphHost {
329329
}
330330

331331
package final func updateRemovedState() {
332-
preconditionFailure("TODO")
332+
let isRemoved: Bool
333+
let removedState: RemovedState
334+
335+
if self.removedState.isEmpty {
336+
if let parentHost {
337+
let state = parentHost.removedState
338+
isRemoved = state.contains(.unattached)
339+
removedState = state
340+
} else {
341+
isRemoved = false
342+
removedState = []
343+
}
344+
} else {
345+
isRemoved = true
346+
removedState = self.removedState
347+
}
348+
let isHiddenForReuse = removedState.contains(.hiddenForReuse)
349+
350+
if isRemoved != data.isRemoved {
351+
if isRemoved {
352+
rootSubgraph.willRemove()
353+
// TODO: OGSubgraphRemoveChild
354+
} else {
355+
// TODO: OGSubgraphAddChild
356+
rootSubgraph.didReinsert()
357+
}
358+
data.isRemoved = isRemoved
359+
}
360+
if isHiddenForReuse != data.isHiddenForReuse {
361+
data.isHiddenForReuse = isHiddenForReuse
362+
isHiddenForReuseDidChange()
363+
}
333364
}
334365

335366
// MARK: - GraphHost + Transaction
@@ -582,7 +613,7 @@ private final class GlobalTransaction {
582613
}
583614
}
584615

585-
// MARK: - Graph + Extension
616+
// MARK: - Graph + GraphHost
586617

587618
extension Graph {
588619
package func graphHost() -> GraphHost {

Sources/OpenSwiftUICore/Layout/Edge/EdgeInsets.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ public struct EdgeInsets: Equatable {
1616
public var trailing: CGFloat
1717

1818
@inlinable
19-
@inline(__always)
2019
public init(top: CGFloat, leading: CGFloat, bottom: CGFloat, trailing: CGFloat) {
2120
self.top = top
2221
self.leading = leading
@@ -25,11 +24,12 @@ public struct EdgeInsets: Equatable {
2524
}
2625

2726
@inlinable
28-
@inline(__always)
2927
public init() {
3028
self.init(top: 0, leading: 0, bottom: 0, trailing: 0)
3129
}
3230

31+
package static var zero: EdgeInsets { EdgeInsets() }
32+
3333
@inline(__always)
3434
init(_ value: CGFloat, edges: Edge.Set) {
3535
self.init(

Sources/OpenSwiftUICore/View/Debug/ViewDebug.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,15 @@ extension View {
9797
}
9898
}
9999

100-
extension ViewModifier {
100+
extension ViewModifier {
101+
package static func makeDebuggableView(
102+
modifier: _GraphValue<Self>,
103+
inputs: _ViewInputs,
104+
body: @escaping (_Graph, _ViewInputs) -> _ViewOutputs
105+
) -> _ViewOutputs {
106+
preconditionFailure("TODO")
107+
}
108+
101109
static func makeDebuggableViewList(
102110
modifier: _GraphValue<Self>,
103111
inputs: _ViewListInputs,

0 commit comments

Comments
 (0)