Conversation
On macOS the packages list is a wxDataViewCtrl whose checkbox column only changes on a click. VoiceOver sends one for VO+Space while interacting with the list, but a plain Space reached no handler at all, so a keyboard user could not tick anything (Timtam#28). Space on the selected row now runs the same toggle as a click: the model's set_value body moved into a shared closure that both call, and the toggle column's state is read through one helper, which also replaces the four copies of the group aggregate in get_value. Disabled rows are left alone, as with a click. A toggle made from code gives VoiceOver nothing to read, because the row it is on is rebuilt behind it. A small voiceover module posts NSAccessibilityAnnouncementRequestedNotification with the row's new state ("Checked" / "Unchecked", in all five locales). It uses CoreFoundation's toll-free bridged types, so no Objective-C runtime calls or new crates. Fixes Timtam#28 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Fixes #28.
What was wrong
On macOS the packages list is a
wxDataViewCtrlwhose checkbox column only changes on a click. VoiceOver sends one for VO+Space while the user is interacting with the list, but a plain Space reached no handler at all. So unless you knew to interact first, nothing could be ticked from the keyboard, which is what xogium hit.What changed
set_valuebody moved into a shared closure that both call. Disabled rows are left alone, as with a click.voiceovermodule postsNSAccessibilityAnnouncementRequestedNotificationwith "Checked" / "Unchecked" (new keys in all five locales). It builds the dictionary with CoreFoundation's toll-free bridged types, so there are no Objective-C runtime calls and no new crates.packages_tree_toggle_state, which also replaces the four copies of the group aggregate inget_value. Most of the diff's line count is that closure moving and being re-indented.Testing
Validated on macOS with VoiceOver (fr-FR): Space on packages, groups and a disabled row; VO+Space while interacting still toggles once and isn't doubled.
cargo fmt,cargo clippy -p rabbit-ui-wxdragon --features gui(no new warnings) andcargo testare clean locally.Windows is untouched: all of this sits in the non-Windows DataView path, apart from the two locale keys.
Heads-up: this will conflict with #27 (the UI crate split), since it edits the DataView page and model. Happy to rebase whichever lands second.
🤖 Generated with Claude Code