On Mon, 23 Mar 2026 15:00:21 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 > > chuckyschluz has updated the pull request incrementally with one additional > commit since the last revision: > > split unit tests Congratulations on your first commit! ------------- PR Comment: https://git.openjdk.org/jfx/pull/2109#issuecomment-4112513800
