On Mon, 16 Mar 2026 18:52:50 GMT, chuckyschluz <[email protected]> wrote:

> Fixes [8202066](https://bugs.openjdk.org/browse/JDK-8202066)
> 
> `selectRows(int, int)` calls `clearSelection(int)` in a loop which is slow. 
> There are two cases to consider: `minRow == maxRow` and `minRow < maxRow`. 
> 
> In both cases, all indices such that `selectedIndex < minRow || selectedIndex 
> > maxRow` are cleared. `clearSelection(int)` clears the associated bit and 
> clears the focus and selected index if operation causes the selected indices 
> to be empty. 
> 
> **minRow == maxRow**
> 
> `select(int)` updates the focus and selected index if the input argument is 
> not already selected. Otherwise, it is a no-up. Therefore, clearing all the 
> selected indices with `clearSelection(int)` and calling `select(minRow)` is 
> equivalent to `clearAndSelect(minRow)`. 
> 
> **minRow < maxRow**
> 
> `selectRange(int, int)` resolves to `selectIndices(int, int...)`, which 
> updates the focus and selected index to the last valid index, regardless if 
> that index was already selected. Therefore, the focus and selected index 
> prior to `selectRange` is irrelevant. 
> 
> 
> Results are encouraging:
> 
> [StringPlayground3.java](https://github.com/user-attachments/files/26034143/StringPlayground3.java)
> 
> Mainline:
> 
> Starting Benchmark with 5500 elements!
> Robot finished in: 85ms
> UI Unfroze after: 33108ms
> Total Operation: 33193ms
> 
> With change:
> 
> Starting Benchmark with 5500 elements!
> Robot finished in: 87ms
> UI Unfroze after: 1ms
> Total Operation: 88ms

The fix looks good, there is no regression wrt 
https://bugs.openjdk.org/browse/JDK-8115366

Would it be possible to create a headless unit test similar to one you are 
working on for #2100 ?

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

PR Comment: https://git.openjdk.org/jfx/pull/2109#issuecomment-4076873960

Reply via email to