mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-04 03:57:09 +00:00
fix(runner): a selector the tree cannot resolve is not a focus failure
otherElementHoldsFocus answered true when FindNode returned nothing, so an unresolvable target read as "another element holds focus". confirmFocus then re-dumped, resolved nothing again, and errored unconditionally. Three of those in a row abort the run. Not knowing where the target is says nothing about where the text would land. The guard's real case, a resolved target with focus outside its subtree, still errors exactly as before. Claude-Session: https://claude.ai/code/session_01A5KmftdEJ49A9z5mF5ESrX
This commit is contained in:
1 parent
c8e6c6634c
commit
231a74b876
2 files changed
+29
-2
No files matched your search
@@ -827,13 +827,16 @@ func confirmFocus(
|
||||
|
||||
// otherElementHoldsFocus reports whether the hierarchy shows focus on
|
||||
// something outside the selector's subtree, which is the state that sends
|
||||
// typed text to the wrong field.
|
||||
// typed text to the wrong field. A selector the hierarchy cannot resolve
|
||||
// answers false: not knowing where the target is says nothing about where the
|
||||
// text would land, and failing on it turns every step the dump has no node for
|
||||
// into an apply error, which is an aborted run three steps later.
|
||||
func otherElementHoldsFocus(tree *hierarchy.Tree, selector string) bool {
|
||||
if tree == nil || focusedElement(tree) == nil {
|
||||
return false
|
||||
}
|
||||
target := tree.FindNode(selector)
|
||||
return target == nil || !holdsFocus(target)
|
||||
return target != nil && !holdsFocus(target)
|
||||
}
|
||||
|
||||
func focusedElement(tree *hierarchy.Tree) *hierarchy.Element {
|
||||
|
||||
Reference in new issue
Block a user