On Fri, 28 Feb 2025 18:34:31 GMT, Andy Goryachev <[email protected]> wrote:
>> modules/javafx.controls/src/main/java/javafx/scene/chart/Chart.java line 561:
>>
>>> 559: accessibilityActive = winProp; // keep the reference
>>> so it won't get gc
>>> 560:
>>> 561: // lambda cannot be used in place of a ChangeListener
>>> in removeListener()
>>
>> Why not use a Subscription then? It seems tailor-made for what you are
>> trying to do.
>
> I don't know how to use Subscription in this case.
> This does not work:
>
>
> ObservableValue<Window> winProp =
> sceneProperty().flatMap(Scene::windowProperty);
> accessibilityActive = winProp; // keep the reference so it
> won't get gc
> Subscription sub = winProp.subscribe((win) -> {
> if (win != null) {
> if (accessibilityActive == winProp) {
> accessibilityActive = null;
> }
> if (isAccessibilityActive()) {
> handleAccessibilityActive(true);
> }
> //winProp.removeListener(this);
> sub.unsubscribe(); <-- COMPILE ERROR
> }
> });
@hjohn could you help here please? How could we use Subscription in a
situation when it has to be unsubscribed from within the lambda?
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1697#discussion_r1978113628