Repository navigation
Acquire widget keyboard focus only for explicit user intent - #117
Draft
xandreeddev wants to merge 14 commits into
Draft
xandreeddev wants to merge 14 commits into
xandreeddev wants to merge 14 commits into
Conversation
Add prepared-hit press observers, typed one-shot native focus requests, and exact lifetime focus observations. Track pending and acknowledged widget ownership per member and output, clear foreground or lost ownership, and never restore demand merely because a panel closes. Keep native acquisition integration separate until the coherent candidate is built and tested.
Use exact prepared input and native lifetime identity, preserve last presented state for keyboard policy commits, and verify retained focus after releasing the optional protocol grab. Add source-authored callback, ordering, retirement and presentation-state regressions; local Cargo and native execution remain pending.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closing notification history can let a passive desktop widget reclaim keyboard focus before a cold browser receives keys. This change separates keyboard capability, explicit user demand and native ownership. The framework performs one-shot acquisition and verifies retention after grab teardown; caret/focus paint follows actual keyboard activity. Domain ports remain independent of native objects and secure clients opt out.
The original ba5 cold-browser pointer and Tab/Enter routes pass, including trusted keyboard input and all nine cleanup checks per case. This PR remains a draft: fast inline-widget acquisition, outside handoff and reacquisition still need a valid complete native trial. The earlier held-button/completed-click failures retain their exact outcomes; their guest delivery order was not measured.
Validation on source
ba5b8a51:The separately compiled/deployed d77 control-flush candidate passes 17 stages/885 tests/99 named regressions and fresh export. Its original cold URI pointer and Tab/Enter cases also pass all three feature/nine cleanup checks each. A completed Notes click delivers the first key and normal undo. The later closed V10 diagnostic establishes a test-transport problem: the guest receives the outside KeyA 4.332 ms before the tablet press, and the pointer never reaches the browser. This does not establish a Lucent focus failure or infer earlier trials' guest order. The observer closes both descriptors; eight cleanup checks pass but original-cursor restoration fails, with no later recovery claimed. Correct physical pointer preparation and retesting remain pending. d77 source/captures are not promoted into this ba5 PR.
Still missing: valid fast first-key/outside/reacquisition acceptance; secure pixels/login and suspend regression; eligible normal memory at or below 300 MiB; source-rate/60 FPS and smooth interaction measurements; physical-device and broader application coverage. Source-specific reports and historical flags remain unchanged. No full-goal or performance acceptance is claimed.