RFR: 8284281: [Accessibility] [Win] [Narrator] Exceptions with TextArea & TextField when deleted last char

Kevin Rushforth kcr at openjdk.org
Wed Aug 24 14:28:01 UTC 2022


On Wed, 24 Aug 2022 13:50:32 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:

> Issue:
> When Narrator is running, 
> 1. Deleting last character from `TextField` throws `IllegalArgumentException`, and 
> 2. Deleting last character from `TextArea` throws `NPE`.
> 
> Fix:
> When character is deleted, we receive an offset larger by one than the current text length. This scenario needs to be handled correctly.
> The change in `Text.java` fixes the NPE with TextArea, and,
> The change in `WinTextRangeProvider.java` fixes the IllegalArgumentException with TextField.
> 
> To observe the issue.
> 1. Run any program with TextField and/or TextArea
> 3. Launch Windows Narrator
> 4. Delete the last character from TextField / TextArea
> 5. Observe the related Exception

I'll test this before finishing my review. I left 2 question inline.

I'll review this, but it would be helpful for someone else to as well. Maybe @aghaisas can also review?

modules/javafx.graphics/src/main/java/javafx/scene/text/Text.java line 1990:

> 1988:                 int offset = (Integer)parameters[0];
> 1989:                 TextLine[] lines = getTextLayout().getLines();
> 1990:                 if (offset > getTextInternal().length()) return lines.length;

A couple questions:

1. This will return an offset that represents the position just past the end of the list of lines. I presume this is OK?
2. The `LINE_START` and `LINE_END` cases also can return null. Should a similar fix be applied for those cases?

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

PR: https://git.openjdk.org/jfx/pull/884


More information about the openjfx-dev mailing list