[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: JDK-8245919: Region#padding property rendering error
From: John Hendrikx <jhendrikx () openjdk ! org>
Date: 2023-03-27 23:16:43
Message-ID: -ypPhDce19uqwTo5kOpthcChMemjQFBrF4vBr2wmaZ4=.07008d37-adb2-4bd7-8f61-39099d3e11ee () github ! com
[Download RAW message or body]
On Mon, 27 Mar 2023 23:05:00 GMT, John Hendrikx <jhendrikx@openjdk.org> wrote:
> Fix bug in CSS caching code that could reset values on unrelated nodes.
>
> The bug occurs due to a cache entry being constructed incorrectly when the initial \
> node that triggered the cache entry creation has user set values. The calculated \
> values for properties with a user set value were omitted in the cache entry, and \
> other nodes that later share the same entry would incorrectly assume the omitted \
> property was unstyled and were therefore reset to their default values.
Note for reviewers:
The problem of one Node affecting another unrelated Node is because all properties of \
the same type, at the same level and same pseudo state set share a cache entry. When \
the cache entry is constructed based on a Node with an overridden property, the \
calculated value for the overridden property would be omitted incorrectly -- it is \
incorrect because other Nodes that would share the same entry may not have this \
property overridden! The cache entry always should have a complete set of calculated \
values, regardless of which Node was used to construct the initial cache entry.
I removed the user overridden property check in `lookup`. I think this is harmless \
because both callers of `lookup` do the same check themselves again to avoid applying \
a style that would override a user set value. However, in `transitionToState` this \
is just **after** the calculated value is added to the cache, which is exactly what \
you want. A test verifies that the fix works.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1072#issuecomment-1485983070
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic