On Tue, 28 Nov 2023 00:51:36 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> Provides a public utility method for use by the skins (core and custom) to 
>> simplify initialization of styleable properties.
>> 
>> 
>> + /**
>> + * Utility method which combines CssMetaData items in one unmodifiable list 
>> with the size equal to the number
>> + * of items it holds (i.e. with no unnecessary overhead).
>> + *
>> + * @param list the css metadata items, usually from the parent, not nullable
>> + * @param items the additional items
>> + * @return the unmodifiable list containing all of the items
>> + *
>> + * @since 22
>> + */
>> + public static List<CssMetaData<? extends Styleable, ?>> initStyleables(
>> + List<CssMetaData<? extends Styleable, ?>> list,
>> + CssMetaData<? extends Styleable, ?>... items)
>
> Andy Goryachev has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   combine

We should also consider changing the specification of 
`Node.getClassCssMetaData`. It currently says:

    /**
     * Gets the {@code CssMetaData} associated with this class, which may 
include the
     * {@code CssMetaData} of its superclasses.
     */


That's strange. A subclass cannot elect to forgo its inherited properties; yet 
the specification allows it to pretend it doesn't have metadata for its 
inherited properties. This should be changed in the following ways:
1. A derived class **must** include the metadata of its base class.
2. The inherited metadata **must** come before the new metadata in the list.

The specification should also point developers to the new `CssMetaData.combine` 
API.

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

PR Comment: https://git.openjdk.org/jfx/pull/1296#issuecomment-1828889945

Reply via email to