Something I found out while experimenting in 
https://github.com/openjdk/jfx/pull/2051.
It was on my list to do since then.

The `VirtualFlow` can end up creating 1-2 unnecessary cells, which then are 
never used. They just sit in the pile.
This happens because we may end up calling `addLeadingCells` although our first 
cell is already on position `0`, so at the top - there is no cell above us.

In this scenario, we do not need to call `addLeadingCells`.

Also added the optimization I found in the PR mentioned above.
When we have 10 visible cells, size 25px and scroll 10px, we will have 11 cells 
visible. 
If we scroll to the top again, we will have 10 cells visible again -- and in 
this case we will remove it from the `sheet`. 
But the pile could contain even more piled cells (e.g. when the application 
size got smaller, we have less cells to render, all remaining cells went into 
the pile). 
So the removal is a bit faster with that method, instead of always calling 
`removeAll`. Same functionality.

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - 8392117: VirtualFlow may end up creating 1-2 unnecessary cells

Changes: https://git.openjdk.org/jfx/pull/2308/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2308&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8392117
  Stats: 56 lines in 2 files changed: 48 ins; 1 del; 7 mod
  Patch: https://git.openjdk.org/jfx/pull/2308.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2308/head:pull/2308

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

Reply via email to