RFR: 8090123: Items are no longer visible when collection is changed [v4]

Kevin Rushforth kcr at openjdk.org
Wed Feb 22 12:57:21 UTC 2023


On Wed, 22 Feb 2023 11:08:39 GMT, Karthik P K <kpk at openjdk.org> wrote:

>> When a large number of items were scrolled in the `ChoiceBox`, the scrolled offset was carried forward when the list is replaced with small number of items. Hence the scroll up arrow was displayed with empty popup.
>> 
>> Changed code to scroll to top before popup display when content height of `ChoiceBox` is smaller than the scrolled offset.
>> 
>> Added system test to validate the fix.
>
> Karthik P K has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Updating test

I added a few minor comments inline. I'll let others do the formal review.

modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/ContextMenuContent.java line 346:

> 344:         itemsContainer.relocate(x, y);
> 345: 
> 346:         if(contentHeight < Math.abs(ty)){

Minor: add space after `if`

modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/ContextMenuContent.java line 822:

> 820:     }
> 821: 
> 822:     boolean isUpArrowVisible() {

If these two new methods are only added for testing (which it looks like they are), please add a comment to that effect.

tests/system/src/test/java/test/robot/javafx/scene/ChoiceBoxScrollUpOnCollectionChangeTest.java line 95:

> 93:     private void scrollChoiceBox(int scrollAmt) throws Exception {
> 94:         Util.runAndWait(() -> {
> 95:             for (int i=0; i<scrollAmt; i++) {

Minor: add spaces around `=` and `<`.

tests/system/src/test/java/test/robot/javafx/scene/ChoiceBoxScrollUpOnCollectionChangeTest.java line 102:

> 100:             try {
> 101:                 Thread.sleep(400); // Wait for up arrow to get loaded in UI
> 102:             } catch (Exception e) {}

Minor: If you use `Util.sleep` you don't need a try/catch.

tests/system/src/test/java/test/robot/javafx/scene/ChoiceBoxScrollUpOnCollectionChangeTest.java line 118:

> 116:         Util.runAndWait(() -> {
> 117:             ObservableList<String> items = FXCollections.observableArrayList();
> 118:             for(int i=0 ; i<count ; i++) {

Minor: add space after `for` and spaces around `=` and `<`.

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

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


More information about the openjfx-dev mailing list