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

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

Commit messages:
 - JDK-8218745: TableView: visual glitch at borders on horizontal scrolling

Changes: https://git.openjdk.org/jfx/pull/1330/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1330&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8218745
  Stats: 306 lines in 14 files changed: 122 ins; 41 del; 143 mod
  Patch: https://git.openjdk.org/jfx/pull/1330.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1330/head:pull/1330

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

Reply via email to