From 94f28cd980b91f78bd0d64d690f40a5ef06a22a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= Date: Fri, 22 Dec 2023 14:40:20 +0100 Subject: [PATCH] expression-list-model: Do not use one weak reference per item Use strong references instead. Otherwise dropping the item watches for each member of a big room takes too long. --- src/utils/expression_list_model.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/expression_list_model.rs b/src/utils/expression_list_model.rs index d75a74fd..4e3b3b2e 100644 --- a/src/utils/expression_list_model.rs +++ b/src/utils/expression_list_model.rs @@ -75,7 +75,7 @@ impl ExpressionListModel { let added = if let Some(model) = model { let items_changed_handler = model.connect_items_changed( - clone!(@weak self as obj => move |_, pos, removed, added| { + clone!(@strong self as obj => move |_, pos, removed, added| { obj.watch_items(pos, removed, added); obj.items_changed(pos, removed, added); }), @@ -135,7 +135,7 @@ impl ExpressionListModel { for expression in &expressions { item_watches.push(expression.watch( Some(&item), - clone!(@weak self as obj, @weak item => move || { + clone!(@strong self as obj, @weak item => move || { obj.item_expr_changed(&item); }), ));