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 Marked as reviewed by angorya (Reviewer). I'd like a second pair of eyes on this, due to change in ListView (though the change looks reasonable and the test seems to be doing the right thing). Also, I only tested it with the reproducer on macOS 15.1.1 M1, can we get this tested on Windows and/or Linux? (just noticed you already specified 2 reviewers, my "contribution" was unnecessary) ------------- PR Review: https://git.openjdk.org/jfx/pull/1692#pullrequestreview-2587607749 PR Comment: https://git.openjdk.org/jfx/pull/1692#issuecomment-2628126666 PR Comment: https://git.openjdk.org/jfx/pull/1692#issuecomment-2628130225