On Fri, 31 Jan 2025 19:18:17 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

>> When the current editor value of a `ComboBox` is added to its items list, 
>> the editor value may be changed to an entirely unrelated item in the list. 
>> However, our expectation would be that the editor reflects the newly added 
>> item instead.
>> 
>> Under normal circumstances, adding items to the list in front of the current 
>> item causes `selectedIndex` to be shifted by the number of items added, 
>> keeping the editor value in sync with the currently selected item.
>> 
>> Let's illustrate this with an example:
>> `items = [foo, bar, baz]`, `selectedIndex = 0`, `selectedItem = foo`
>> 
>> The user changes the editor value to `qux` and inserts the value at list 
>> position 0, causing the current index to be shifted to the right (in 
>> `ComboBoxSelectionModel::itemsContentObserver`):
>> `items = [qux, foo, bar, baz]`, `selectedIndex = 1`, `selectedItem = foo`
>> 
>> The index is shifted a second time in 
>> `ListViewBitSetSelectionModel::updateSelection`:
>> `items = [qux, foo, bar, baz]`, `selectedIndex = 2`, `selectedItem = bar`
>> 
>> Now `bar` is selected and shown in the editor, but we would expect `qux` 
>> instead. The fix is to detect that we're inserting the current editor value 
>> in `ComboBoxSelectionModel::itemsContentObserver`, and select the correct 
>> item directly. We also need to account for this situation in 
>> `ListViewBitSetSelectionModel`, where we check whether the current value is 
>> already contained in the added values.
>
> Michael Strauß has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   update copyright header

Looks good.

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

Marked as reviewed by kcr (Lead).

PR Review: https://git.openjdk.org/jfx/pull/1692#pullrequestreview-2602409040

Reply via email to