RFR: 8090123: Items are no longer visible when collection is changed [v7]
    Kevin Rushforth 
    kcr at openjdk.org
       
    Tue Mar  7 00:26:20 UTC 2023
    
    
  
On Fri, 3 Mar 2023 07:28:48 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:
> 
>   Stabilizing test
The updated test seems stable now. I did leave a couple suggestions.
Have you run the test this on all platforms?
tests/system/src/test/java/test/robot/javafx/scene/ChoiceBoxScrollUpOnCollectionChangeTest.java line 62:
> 60:  * There is 1 test in this file.
> 61:  * Steps for testChoicBoxScrollOnCollectionChange()
> 62:  * 1. Create a ChoiceBox and add 50 items to it.
Minor: the comment is wrong now (you add 150 items).
tests/system/src/test/java/test/robot/javafx/scene/ChoiceBoxScrollUpOnCollectionChangeTest.java line 143:
> 141: 
> 142:         double rowHeight = ContextMenuContentShim.getContextMenuRowHeight(popup);
> 143:         double screenHeight = Screen.getPrimary().getBounds().getHeight();
I think using `getVisualBounds()` would be better.
tests/system/src/test/java/test/robot/javafx/scene/ChoiceBoxScrollUpOnCollectionChangeTest.java line 144:
> 142:         double rowHeight = ContextMenuContentShim.getContextMenuRowHeight(popup);
> 143:         double screenHeight = Screen.getPrimary().getBounds().getHeight();
> 144:         scrollChoiceBox((int) (screenHeight / rowHeight));
This seems to work, but it might be more robust to use `Math.ceil()` before casting to int, especially if you make the change to use the visual bounds.
-------------
PR: https://git.openjdk.org/jfx/pull/1039
    
    
More information about the openjfx-dev
mailing list