On Thu, 11 Aug 2022 13:55:10 GMT, Marius Hanl <[email protected]> wrote:

>> I like this idea.
>> 
>> However, I am afraid that the impact of the check in PopupControl might be 
>> greater than expected.  In addition to your 
>> ComboBoxPopupcontrol.createPopup() fix you provided earlier, there is a 
>> similar situation with TooltipSkin in PopupcontrolTest:604:
>> 
>> 
>>         Tooltip tooltip = new Tooltip("Hello");
>>         TooltipSkin skin = new TooltipSkin(tooltip);
>>         popup.setSkin(skin);
>> 
>> 
>> it is not entirely clear to me why a TooltipSkin is installed as a skin for 
>> the popup instead of the tooltip.
>> 
>> I think we should rather say that this 1:1 rule does not apply to 
>> PopupControls.
>
> It is a bit weird as `Popups` are not using the `getSkinnable` method it 
> looks like. And also the `getSkinnable` method javadoc states: `Gets the 
> Skinnable to which this Skin is assigned.` which is not true for the 
> `ComboBox` Popup (as it sets the `ComboBox` as the skinnable) - while it 
> makes sense that the `ComboBox` is set as styleable parent.

So it is even more weird:
`getSkinnable()` is always called in `Control` skins, `getNode()` is only 
called in `Control.getSkinNode()`, `PaginationSkin` and `TableColumnHeader` (so 
not very much).
`getNode()` is always called for `Popups` (no `getSkinnable()` is called).

The only exception is the internal class `InputFieldSkin`, where the node is an 
'inner TextField' and the skinnable the control where it is installed on.

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

PR: https://git.openjdk.org/jfx/pull/845

Reply via email to