This change allows custom control to change their style dynamically
When the user-agent stylesheet changes the property automatically calls
`NodeHelper.reapplyCSS(Region.this);` to recompute the CSS for the node and its
children.
To make this work the StyleManager class must be fixed too.
The line `regionUserAgentStylesheet =
weakRegionUserAgentStylesheetMap.computeIfAbsent((Region)region,
Region::getUserAgentStylesheet);
` is problematic because if the region is already present in the map but the
user-agent stylesheet changed, the value of `regionUserAgentStylesheet` is not
updated and this leads to controls having the wrong style.
To fix this issue I added this check:
if (((Region) region).getUserAgentStylesheet() != null && !((Region)
region).getUserAgentStylesheet().equals(regionUserAgentStylesheet)) {
weakRegionUserAgentStylesheetMap.put((Region) region, ((Region)
region).getUserAgentStylesheet());
regionUserAgentStylesheet = ((Region) region).getUserAgentStylesheet();
}
-------------
Commit messages:
- Allow dynamic implementation of user-agent stylesheet
Changes: https://git.openjdk.java.net/jfx/pull/525/files
Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=525&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8263095
Stats: 44 lines in 2 files changed: 24 ins; 17 del; 3 mod
Patch: https://git.openjdk.java.net/jfx/pull/525.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/525/head:pull/525
PR: https://git.openjdk.java.net/jfx/pull/525