Add autofocus mode.
This commit is contained in:
1 parent
b232c1eebb
commit
3e2429b8a5
19 files changed
+279
-8
No files matched your search
@@ -32,6 +32,7 @@ type browserModeResult struct {
|
||||
// The event loop owns policy. One joined worker resolves only the latest focus;
|
||||
// a generation check rejects results overtaken by another focus or caret event.
|
||||
type browserModeController struct {
|
||||
settings func() review.ModeSettings
|
||||
source any
|
||||
keys browseKeyOwner
|
||||
capturer documentContextCapturer
|
||||
@@ -228,9 +229,30 @@ func (browser *browserModeController) accept(result browserModeResult, speech sp
|
||||
browser.ready = true
|
||||
modeInput := runtimeModeInput(result.owner)
|
||||
modeInput.Origin = result.origin
|
||||
mode := browser.state.Update(modeInput, review.DefaultModeSettings())
|
||||
mode := browser.state.Update(modeInput, browser.modeSettings())
|
||||
browser.set(mode, speech, false)
|
||||
}
|
||||
func (browser *browserModeController) modeSettings() review.ModeSettings {
|
||||
if browser.settings != nil {
|
||||
return browser.settings()
|
||||
}
|
||||
return review.DefaultModeSettings()
|
||||
}
|
||||
|
||||
// The review worker supplies the target's owned ancestry from the same
|
||||
// document used for navigation. No accessibility calls run on the event loop.
|
||||
func (browser *browserModeController) navigationMode(result review.Result, speech speechEnqueuer) {
|
||||
settings := browser.modeSettings()
|
||||
if result.DocumentPosition.Origin != review.StructuralNavigation || !settings.StructuralTriggersFocus {
|
||||
return
|
||||
}
|
||||
owner := atspi.DocumentContext{Document: result.DocumentPosition.Document, TopLevel: result.DocumentPosition.Document, Ancestors: result.DocumentCaretContext}
|
||||
modeInput := runtimeModeInput(owner)
|
||||
modeInput.Origin = review.StructuralNavigation
|
||||
mode := browser.state.Update(modeInput, settings)
|
||||
browser.set(mode, speech, false)
|
||||
}
|
||||
|
||||
func (browser *browserModeController) set(mode review.DocumentMode, speech speechEnqueuer, manual bool) {
|
||||
previous := browser.mode
|
||||
browser.mode = mode
|
||||
|
||||
Reference in new issue
Block a user