Skip to content

Commit 95e957c

Browse files
authored
Fix UIHostingView environment resolution (#920)
1 parent 64924bc commit 95e957c

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

Sources/OpenSwiftUI/Integration/Hosting/UIKit/View/UIHostingViewBase.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ package class UIHostingViewBase {
212212
}
213213
var result = traitCollection.resolvedEnvironment(base: EnvironmentValues(environment.plist))
214214
result.configureForPlatform(traitCollection: traitCollection)
215-
return environment
215+
return result
216216
}
217217

218218
package func endUpdateEnvironment(_ environment: EnvironmentValues) {

Tests/OpenSwiftUITests/Integration/Hosting/UIKit/View/UIHostingViewBaseTests.swift

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,34 @@
55
#if os(iOS) || os(visionOS)
66
import Foundation
77
import Testing
8-
@testable import OpenSwiftUI
8+
import OpenSwiftUI
99
@_spi(ForOpenSwiftUIOnly)
1010
import OpenSwiftUICore
1111
import UIKit
1212
import OpenSwiftUITestsSupport
1313

1414
@MainActor
1515
struct UIHostingViewBaseTests {
16+
@Test
17+
func startUpdateEnvironmentReturnsResolvedTraitEnvironment() {
18+
let uiView = UIView()
19+
let base = UIHostingViewBase(rootViewType: EmptyView.self, options: [])
20+
base.uiView = uiView
21+
base.traitCollectionOverride = UITraitCollection(traitsFrom: [
22+
UITraitCollection(layoutDirection: .rightToLeft),
23+
UITraitCollection(displayScale: 3.0),
24+
])
25+
26+
var inheritedEnvironment = EnvironmentValues()
27+
inheritedEnvironment.layoutDirection = .leftToRight
28+
inheritedEnvironment.displayScale = 1.0
29+
base.inheritedEnvironment = inheritedEnvironment
30+
31+
let environment = base.startUpdateEnvironment()
32+
#expect(environment.layoutDirection == .rightToLeft)
33+
#expect(environment.displayScale == 3.0)
34+
}
35+
1636
@Test(.bug(id: "#406"))
1737
func uiWindowSceneDeallocIssue() async throws {
1838
struct ContentView: View {

0 commit comments

Comments
 (0)