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