> Another much better try to fix the issue. > I recommend to read: https://github.com/openjdk/jfx/pull/2201 first. All > tests from there are included. > I added some new ones that succeed before and after, a first step for more > CSS tests as discussed in: > https://github.com/openjdk/jfx/pull/2218#issuecomment-5094495306 > > My new idea is now the following constraint, which I think is also a much > better approach: > - A `CssStyleHelper` always has a correct `firstStyleableAncestor`. We can at > any time trust and rely on it. > - We will also reuse the existing loop for the `isUserSetFont` check to > improve the performance a bit > > Implementation: > - We now save a flag to exactly know in which CSS state the `Node` is. > - We will collect all `Node`s in the scene tree once and then reuse the list > when we need to process a stale `styleHelper` from a parent. > - This will make sure we do no process the parent again and again when we > have some stale `styleHelper`s in the chain > - Not every `Node` has a `styleHelper` - it is only created when needed, so > we can not attach the flag in there. > > This fixes the issue while a deep (optionally unstyled) scene graph has no > performance penality. > The approach is similar than my previous PR, but more smart. And with the set > constraint mentioned above. > > --- > > I do think we can improve the `CssStyleHelper` more. But for another day. > Maybe at one point, with more tests and when all requirements are clear, we > can find a way without `CssHelperState` and without creating an empty > `CssStyleHelper` just to hold trigger states (because of that, we need to > check `styleHelper.cacheContainer != null` a lot of times). > > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
Marius Hanl has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 17 commits: - Merge branch 'master' of https://github.com/openjdk/jfx into 8388277-REDO]-Looked-up-color-fails-for--fx-background-color-in-JavaFX-CSS-file - transitionToState() Javadoc is wrong, it has nothing to do with pseudo classes (only) - unify all tests and their documentation to the same pattern - improve doc and CssStyleHelper contract to improve readability - Fix edge case, improve tests by counting actual matches, improve doc - Improve tests - Merge branch 'master' of https://github.com/openjdk/jfx into 8388277-REDO]-Looked-up-color-fails-for--fx-background-color-in-JavaFX-CSS-file # Conflicts: # modules/javafx.graphics/src/main/java/javafx/scene/CssStyleHelper.java - Merge branch 'master' of https://github.com/openjdk/jfx into 8388277-REDO]-Looked-up-color-fails-for--fx-background-color-in-JavaFX-CSS-file - fix - test - ... and 7 more: https://git.openjdk.org/jfx/compare/c4917c1d...2b2dd0cd ------------- Changes: https://git.openjdk.org/jfx/pull/2225/files Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2225&range=07 Stats: 1221 lines in 6 files changed: 1006 ins; 92 del; 123 mod Patch: https://git.openjdk.org/jfx/pull/2225.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/2225/head:pull/2225 PR: https://git.openjdk.org/jfx/pull/2225
