From d7f2cf5ea2463778f8497dca7a95dbf4d374756d Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 28 May 2026 00:57:53 +0800 Subject: [PATCH 1/2] Fix rotate issue --- .../DisplayList/DisplayListViewModel.swift | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/Sources/OpenSwiftUICore/Render/DisplayList/DisplayListViewModel.swift b/Sources/OpenSwiftUICore/Render/DisplayList/DisplayListViewModel.swift index df0896388..dbc4ea6e3 100644 --- a/Sources/OpenSwiftUICore/Render/DisplayList/DisplayListViewModel.swift +++ b/Sources/OpenSwiftUICore/Render/DisplayList/DisplayListViewModel.swift @@ -168,20 +168,14 @@ extension DisplayList.ViewUpdater { into state: inout State, requirements: inout MergedViewRequirements ) { - switch transform { - case let .affine(transform): - state.adjust(for: transform) - state.transform = transform.concatenating(state.transform) + if let affineTransform = transform.affineTransform { + state.transform = affineTransform.concatenating(state.transform) + state.adjust(for: affineTransform) state.versions.transform.combine(with: item.version) - requirements.insert(.visibleContent) - case let .projection(transform) where transform.isAffine: - let affine = CGAffineTransform(transform) - state.adjust(for: affine) - state.transform = affine.concatenating(state.transform) - state.versions.transform.combine(with: item.version) - requirements.insert(.visibleContent) - default: - requirements.formUnion([.inheritedView, .visibleContent]) + } else if let projectionTransform = transform.projectionTransform { + if !projectionTransform.isIdentity { + requirements.insert(.itemView) + } } } From 4c634bed733d38d87b2467ee21127edae4e70e1b Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 28 May 2026 01:07:03 +0800 Subject: [PATCH 2/2] Enable OSUI rotate UI tests --- .../OpenSwiftUIUITests/Layout/Stack/ZStackIndexUITests.swift | 2 +- .../Render/GeometryEffect/Rotation3DEffectUITests.swift | 2 +- .../Render/GeometryEffect/RotationEffectUITests.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Example/OpenSwiftUIUITests/Layout/Stack/ZStackIndexUITests.swift b/Example/OpenSwiftUIUITests/Layout/Stack/ZStackIndexUITests.swift index 83739379f..335c28084 100644 --- a/Example/OpenSwiftUIUITests/Layout/Stack/ZStackIndexUITests.swift +++ b/Example/OpenSwiftUIUITests/Layout/Stack/ZStackIndexUITests.swift @@ -7,7 +7,7 @@ import Testing import SnapshotTesting @MainActor -@Suite(.snapshots(record: .never, diffTool: diffTool), .disabled(if: viewRendererVendor == .osui, "rotate is not supported")) +@Suite(.snapshots(record: .never, diffTool: diffTool)) struct ZStackIndexUITests { @Test func rotateOverlap() { diff --git a/Example/OpenSwiftUIUITests/Render/GeometryEffect/Rotation3DEffectUITests.swift b/Example/OpenSwiftUIUITests/Render/GeometryEffect/Rotation3DEffectUITests.swift index f4bbeae9d..dc77817ec 100644 --- a/Example/OpenSwiftUIUITests/Render/GeometryEffect/Rotation3DEffectUITests.swift +++ b/Example/OpenSwiftUIUITests/Render/GeometryEffect/Rotation3DEffectUITests.swift @@ -6,7 +6,7 @@ import Testing import SnapshotTesting @MainActor -@Suite(.snapshots(record: .never, diffTool: diffTool), .disabled(if: viewRendererVendor == .osui, "rotate is not supported")) +@Suite(.snapshots(record: .never, diffTool: diffTool)) struct Rotation3DEffectUITests { @Test func rotation3DEffect() { diff --git a/Example/OpenSwiftUIUITests/Render/GeometryEffect/RotationEffectUITests.swift b/Example/OpenSwiftUIUITests/Render/GeometryEffect/RotationEffectUITests.swift index 40c6c4b56..4e2bea22d 100644 --- a/Example/OpenSwiftUIUITests/Render/GeometryEffect/RotationEffectUITests.swift +++ b/Example/OpenSwiftUIUITests/Render/GeometryEffect/RotationEffectUITests.swift @@ -6,7 +6,7 @@ import Testing import SnapshotTesting @MainActor -@Suite(.snapshots(record: .never, diffTool: diffTool), .disabled(if: viewRendererVendor == .osui, "rotate is not supported")) +@Suite(.snapshots(record: .never, diffTool: diffTool)) struct RotationEffectUITests { @Test func rotationEffect() {