On Wed, 10 Jan 2024 22:39:22 GMT, Andy Goryachev <[email protected]> wrote:
>> This PR fixes the border glitch/gap as explained in both linked tickets.
>>
>> I noted that the `ScrollPane` control does not suffer from this problem,
>> although the code is mostly the same as in `VirtualFlow`. The `ScrollPane`
>> snaps the content correctly, no matter which scale. I carefully checked the
>> code and it seems that the container structure in `ScrollPane` was
>> explicitly written to handle this perfectly. There was definitely some
>> thought on that.
>>
>> So to finally fix this issue, I rewrote the `VirtualFlow`
>> container/scrolling code to be **exactly** the same as in `ScrollPane`(Skin).
>> And this also fixes the issue, while behaving the same as before.
>>
>> In the future it may makes sense to try to somewhat unify the code from
>> `ScrollPane` and `VirtualFlow`. I already have some ideas.
>>
>> Unfortunately though, one more container is introduced to `VirtualFlow`, so
>> the css needs to be changed since it is very strictly written in the first
>> place:
>> Before: `.list-view:focused > .virtual-flow > .clipped-container > .sheet >
>> .list-cell`
>> After: `.list-view:focused > .virtual-flow > .viewport > .clipped-container
>> > .sheet > .list-cell`
>>
>> To better understand this, the container structure (tree) is shown below:
>>
>> - ScrollPane
>> - viewRect -> `setClip` -> clipRect (viewContent size)
>> - viewContent -> `setLayoutX`
>> - Content
>> - vsb
>> - hsb
>> - corner
>>
>> ---
>> - VirtualFlow
>> - viewRect **(->NEW IN THIS PR<-)** -> `setClip` -> clipRect
>> (clippedContainer size)
>> - clippedContainer/clipView -> `setLayoutX` (when scrolling)
>> - sheet
>> - Cell
>> - vsb
>> - hsb
>> - corner
>
> modules/javafx.controls/src/main/resources/com/sun/javafx/scene/control/skin/caspian/caspian.css
> line 1508:
>
>> 1506: }
>> 1507:
>> 1508: .list-view:focused > .virtual-flow > .viewport > .clipped-container >
>> .sheet > .list-cell:focused {
>
> This might require a CSR as it might break custom stylesheets that modify
> list/tree/table/views.
Yes, I think a CSR would be in order. Thanks for bringing this up
@andy-goryachev-oracle
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1330#discussion_r1450407373