On Wed, 10 Jan 2024 19:21:16 GMT, Marius Hanl <[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.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1330#discussion_r1448068150