On Sun, 24 Jan 2021 09:24:56 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:
>> modules/javafx.controls/src/main/java/javafx/scene/control/skin/ProgressIndicatorSkin.java >> line 239: >> >>> 237: super.dispose(); >>> 238: >>> 239: treeShowingExpression.dispose(); >> >> This could be removed if you are able to use `registerChangeListener` to add >> the listener. > > I'm not so sure, the listener will be removed from the > `TreeShowingExpression` that was created, but the `TreeShowingExpression` > itself is also registering listeners on the `ProgressIndicator`. I don't see > any `dispose` calls being done by the helper code. If I'm correct, switching > skins multiple times on a `ProgressIndicator` would create multiple > `TreeShowingExpression`s which would create listeners on the > `ProgressIndicator` which in turn reference the expression -- this would > prevent the discarded skins from being GC'd. agreed, nested listeners to control's - nested - properties must be removed (whether or not parent was added via the skin api) Unrelated (and too lazy to check ;) wondering if there are any tests for those nested listeners doing/not their respected jobs after before/after dispose? ------------- PR: https://git.openjdk.java.net/jfx/pull/185