From e8a2ca94094ea08bbfcab3809c8f8a8736cc0ba2 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sat, 7 Nov 2026 21:01:50 -0800 Subject: [PATCH] fix: retry unresolved sparse focus ownership --- .../apple/Sources/LUIAppleBackend/LUISparseScrollProbe.swift | 4 ++-- .../LUIAppleBackendTests/LUISparseVirtualBridgeTests.swift | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/apple/Sources/LUIAppleBackend/LUISparseScrollProbe.swift b/platform/apple/Sources/LUIAppleBackend/LUISparseScrollProbe.swift index 5081416c..66151cd6 100644 --- a/platform/apple/Sources/LUIAppleBackend/LUISparseScrollProbe.swift +++ b/platform/apple/Sources/LUIAppleBackend/LUISparseScrollProbe.swift @@ -111,8 +111,8 @@ import SwiftUI } if let responder, responder.isDescendant(of: document) { let id: Int? - if responder === focusedView { - id = focusedRow.flatMap { state?.contains($0) == true ? $0 : nil } + if responder === focusedView, let row = focusedRow, state?.contains(row) == true { + id = row } else { let frame = responder.convert(responder.bounds, to: document) id = state?.row(at: frame.midY) diff --git a/platform/apple/Tests/LUIAppleBackendTests/LUISparseVirtualBridgeTests.swift b/platform/apple/Tests/LUIAppleBackendTests/LUISparseVirtualBridgeTests.swift index 29f577c0..23bb5db6 100644 --- a/platform/apple/Tests/LUIAppleBackendTests/LUISparseVirtualBridgeTests.swift +++ b/platform/apple/Tests/LUIAppleBackendTests/LUISparseVirtualBridgeTests.swift @@ -53,6 +53,8 @@ } let native = try #require(field(window.contentView!)) native.selectText(nil) + let editor = try #require(native.currentEditor() as? NSTextView) + try #require(window.firstResponder === editor) while !sparseWirePayloads.contains(where: { $0.0 == 20 && $0.2.contains("\(row)") }) && ContinuousClock.now < deadline {