On Wed, 2 Sep 2026 14:22:34 GMT, Florian Kirmaier <[email protected]> wrote:

> When the index of an IndexedCell is changed with 
> `IndexedCell.indexChanged(int, int)`
> then currently no `INDEX` accessibility notification is sent.
> 
> And when the selected element changes, then no `SELECTED` notification is 
> sent.
> 
> As a result, assistive technology is not informed and it breaks the rule - 
> that for every change
> to the accessibility attributes must be notified with 
> `Node.notifyAccessibleAttributeChanged(attribute)`.
> 
> The change is on the
> base classes, so it covers `ListCell`, `TableCell`, `TableRow`, `TreeCell`,
> `TreeTableCell`, and `TreeTableRow`.
> 
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

modules/javafx.controls/src/main/java/javafx/scene/control/Cell.java line 457:

> 455: 
> 456:     // --- selected
> 457:     private ReadOnlyBooleanWrapper selected = new 
> ReadOnlyBooleanWrapper() {

rant: why are these properties not `final` ??

modules/javafx.controls/src/main/java/javafx/scene/control/Cell.java line 460:

> 458:         @Override protected void invalidated() {
> 459:             pseudoClassStateChanged(PSEUDO_CLASS_SELECTED, get());
> 460:             
> notifyAccessibleAttributeChanged(AccessibleAttribute.SELECTED);

it feels to me that this is a wrong place to send the event from:

the event should be sent from the selection model instead of some part of the 
selection.

for example, consider SelectionModel.MULTIPLE and WinAccessible:322

another manifestation of this issue is `[Tree]TableRow.selected` which do not 
expose SELECTED

there might be another variant of this issue on macOS:
- TreeView, select two rows
- focus the second row, deselect the first
will it send selection change notification?

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/2288#discussion_r4415940876
PR Review Comment: https://git.openjdk.org/jfx/pull/2288#discussion_r4415861730

Reply via email to