Skip to content

Conversation

@CyrilleB79
Copy link
Contributor

@CyrilleB79 CyrilleB79 commented Dec 19, 2025

Link to issue number:

Fixes #19395
Fix-up of #19173.

Summary of the issue:

Sometimes, e.g. in Notepad, skim reading process was not correctly interrupted when pressing control key: say all was restarting when another key was pressed.

Description of user facing changes:

Skim reading process is now correctly interrupted when control is pressed.

Description of developer facing changes:

N/A

Description of development approach:

When the speech sequence is stored, it is first filtered.
CallbackCommands are filtered out of the sequence since callback functions such as say all ones should not be called again when repeating the last speech (this was the cause of say all restarting).

Not all BaseCallbackCommands are filtered since other BaseCallbackCommand such as BeepCommand (for indentation reporting) or WaveFileCommands (for spelling error reporting) still need to be reported.

I have not included IndexCommands in the filtering since in any case, they only seem to appear downstream, in the speech manager part.

Regarding CancellableSpeechCommands, I have included them, since I've seen that they are also filtered out from remote speech. Though, I do not exactly know how cancellable speech works, so please double check. Thanks.

Testing strategy:

Manual test of speech repetition in browse mode as well as in Notepad and tests with skim reading as described in #19395.
Also tested that indentation beeps or spelling errors sounds while reading are still played when repeating the last speech.

Known issues with pull request:

None

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@CyrilleB79 CyrilleB79 marked this pull request as draft December 19, 2025 09:10
@CyrilleB79
Copy link
Contributor Author

Converting to draft as I have found the issue caused by the speech sequence: say all callback commands should not be re-executed when re-speaking a speech sequence. I'll investigate later more in depth this type of issues and update the initial description before submitting again to review. Thanks.

@LeonarddeR
Copy link
Collaborator

Looks good to me. I think it makes sense to filter cancellable speech commands, as speaking them will probably be blocked when they are cancelled anyway.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Say all not properly interrupted when silencing speech with control when skimming enabled

2 participants