RFR: 8274061: Tree-/TableRowSkin: misbehavior on switching skin [v2]
Michael Strauß
mstrauss at openjdk.java.net
Sun Oct 31 17:09:11 UTC 2021
On Wed, 27 Oct 2021 09:56:46 GMT, Jeanette Winzenburg <fastegal at openjdk.org> wrote:
>> Cleanup of Tree-/TableRowSkin to support switching skins
>>
>> The misbehavior/s
>> - memory leaks due to manually registered listeners that were not removed
>> - side-effects due to listeners still active on old skin (like NPEs)
>>
>> Fix
>> - use skin api for all listener registration (for automatic removal in dispose)
>> - do not install listeners that are not needed (fixedCellSize, same as in fix of ListCellSkin [JDK-8246745](https://bugs.openjdk.java.net/browse/JDK-8246745))
>>
>> Added tests for each listener involved in the fix to guarantee it's still working and does not have unwanted side-effects after switching skins.
>>
>> Note: there are pecularities in row skins (like not updating themselves on property changes of its control, throwing NPEs when not added to a VirtualFlow) which are not part of this issue but covered in [JDK-8274065](https://bugs.openjdk.java.net/browse/JDK-8274065)
>
> Jeanette Winzenburg has updated the pull request incrementally with one additional commit since the last revision:
>
> re-added forgotten code comments
modules/javafx.controls/src/main/java/javafx/scene/control/skin/TreeTableRowSkin.java line 299:
> 297: @Override protected ObjectProperty<Node> graphicProperty() {
> 298: TreeTableRow<T> treeTableRow = getSkinnable();
> 299: // FIXME: illegal access if skinnable is null
What is the purpose of removing the null check, but leaving getSkinnable() in there?
Given the signature of the method, it seems that it shouldn't ever return `null` in any case.
-------------
PR: https://git.openjdk.java.net/jfx/pull/632
More information about the openjfx-dev
mailing list