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