RFR: 8263095: Provide a way for a custom control to indicate that its userAgentStyleSheet has changed

Nir Lisker nlisker at openjdk.java.net
Wed Jun 2 03:05:33 UTC 2021


On Mon, 31 May 2021 13:57:22 GMT, Alessadro Parisi <github.com+16880178+palexdev at openjdk.org> wrote:

> 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();
> }

Don't worry about the CSR for now, someone will create it when the review is near completion. However, since this is an enhancement, you should discuss it first in the mailing list as explained in the README file of the repo.

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

PR: https://git.openjdk.java.net/jfx/pull/525


More information about the openjfx-dev mailing list