On Wed, 16 Apr 2025 10:10:36 GMT, Ambarish Rapte <ara...@openjdk.org> wrote:

>> `Parent.needsLayout` is implemented with a `ReadOnlyBooleanWrapper`. The 
>> property getter returns the wrapper itself, but what it should be doing is 
>> return the read-only getter instead.
>> 
>> A single reviewer should be sufficient.
>
> modules/javafx.graphics/src/main/java/javafx/scene/Parent.java line 972:
> 
>> 970:             needsLayout = new ReadOnlyBooleanWrapper(this, 
>> "needsLayout", layoutFlag == LayoutFlags.NEEDS_LAYOUT);
>> 971:         }
>> 972:         return needsLayout.getReadOnlyProperty();
> 
> `ReadOnlyBooleanWrapper` is eventually inherited from 
> `ReadOnlyBooleanProperty`, which is why it did not show any error earlier.
> 
> `needsLayout.getReadOnlyProperty()` returns a private member variable of 
> `ReadOnlyBooleanWrapper` class, which seems to be dummy and fetches the 
> actual value from Wrapper class that were passed when creating an instance of 
> `ReadOnlyBooleanWrapper` i.e. `new ReadOnlyBooleanWrapper(this, 
> "needsLayout", layoutFlag == LayoutFlags.NEEDS_LAYOUT);`
> 
> It seems returning `needsLayout` holds good too...

The reason you shouldn't return `needsLayout` directly is because you can 
circumvent this easily by casting it to `BooleanProperty` and then call setters 
to mutate it.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1780#discussion_r2046668509

Reply via email to