On Fri, 31 Jan 2025 02:37:42 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.

This pull request has now been integrated.

Changeset: 5cdbae24
Author:    Michael Strauß <mstra...@openjdk.org>
URL:       
https://git.openjdk.org/jfx/commit/5cdbae240d7bfbab6d340363a7c394f941fbc36d
Stats:     70 lines in 3 files changed: 65 ins; 0 del; 5 mod

8333275: ComboBox: adding an item from editor changes editor text

Reviewed-by: angorya, kcr

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

PR: https://git.openjdk.org/jfx/pull/1692

Reply via email to