On Tue, 16 Jun 2020 09:03:35 GMT, Robert Lichtenberger <rlich...@openjdk.org> 
wrote:

>> This PR fixes JDK-8176270 by clamping the end index of the selected text to 
>> the length of the text.
>
> Robert Lichtenberger has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   8176270: Adding ChangeListener to TextField.selectedTextProperty causes 
> StringOutOfBoundsException
>   
>   Move replaceSelectionAtEndWithListener test to general test class.
>   Add a more general test for selection/text properties and replace/undo/redo 
> operations.

Changing from using bindings to using listeners seems reasonable as long as 
there can't be a memory leak as a result
(it should be fine).

As I note inline below, I think the clamping is still wrong. Maybe you can't 
ever hit a case where it matters now, but
it should still be fixed.

modules/javafx.controls/src/main/java/javafx/scene/control/TextInputControl.java
 line 186:

> 185:                 int length = txt.length();
> 186:                 if (end > start + length) end = length;
> 187:                 if (start > length-1) start = end = 0;

As I mentioned in [this comment in PR 
#73](https://github.com/openjdk/jfx/pull/73#discussion_r376528686), I think this
test is wrong. The value of `start` has no impact on whether `end` is out of 
range. So... shouldn't this simply be `if
(end > length) end = length;` ?

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

PR: https://git.openjdk.java.net/jfx/pull/138

Reply via email to