From ca071fd924085fd9c8a3bad38b6fdb4cf65b91d4 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 10 Feb 2026 22:42:57 +0800 Subject: [PATCH] Add weak listener registration methods to WeakListenerHolder (#5509) --- .../jackhuang/hmcl/ui/WeakListenerHolder.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/WeakListenerHolder.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/WeakListenerHolder.java index c04516074..ac3d2f83b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/WeakListenerHolder.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/WeakListenerHolder.java @@ -20,14 +20,19 @@ package org.jackhuang.hmcl.ui; import javafx.beans.InvalidationListener; import javafx.beans.WeakInvalidationListener; import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; import javafx.beans.value.WeakChangeListener; import javafx.collections.ListChangeListener; import javafx.collections.WeakListChangeListener; +import org.jackhuang.hmcl.event.Event; +import org.jackhuang.hmcl.event.EventManager; +import org.jackhuang.hmcl.event.EventPriority; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; -public class WeakListenerHolder { +public final class WeakListenerHolder { private final List refs = new ArrayList<>(0); public WeakListenerHolder() { @@ -48,6 +53,22 @@ public class WeakListenerHolder { return new WeakListChangeListener<>(listener); } + public void registerWeak(EventManager manager, Consumer consumer) { + refs.add(manager.registerWeak(consumer)); + } + + public void registerWeak(EventManager manager, Consumer consumer, EventPriority priority) { + refs.add(manager.registerWeak(consumer, priority)); + } + + public void onWeakChange(ObservableValue value, Consumer consumer) { + refs.add(FXUtils.onWeakChange(value, consumer)); + } + + public void onWeakChangeAndOperate(ObservableValue value, Consumer consumer) { + refs.add(FXUtils.onWeakChangeAndOperate(value, consumer)); + } + public void add(Object obj) { refs.add(obj); }