aethersdr / aethersdr/AetherSDR
a11y: WAVE waveform scope (WaveformWidget) needs a QAccessibleInterface
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 221
- Forks
- 117
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 299
Description
WaveformWidget custom-paints (CPU paintEvent / GPU render) data-bearing content — waveform min/max envelope, RMS band, peak, clip indicators, and the header readout (peak/RMS dBFS, clip state, view mode) — added/reworked by PR #3955. It sets an accessibleName but exposes no live values.
Per docs/a11y.md ("Custom-painted widgets"), a data-bearing paint path should expose its state via a QAccessibleInterface subclass returning meaningful text(QAccessible::Name) / text(QAccessible::Value), registered with QAccessible::installFactory.
Screen-reader users currently hear only the static widget name, not the changing waveform readout. Sibling gap tracked for SpectrumWidget in #3957.
🤖 Generated with Claude Code
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the WaveformWidget implementation and docs/a11y.md, especially the "Custom-painted widgets" guidance. Trace the CPU paintEvent, GPU render path, and existing accessibleName, then inspect Qt's QAccessibleInterface and QAccessible::installFactory APIs. Done means screen readers can receive the live waveform readout, including peak/RMS values, clip state, and view mode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- accessibility
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100