From 648c37e9d4ba4801d8da781e76904726e9690543 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 3 Apr 2025 23:17:58 +0300 Subject: [PATCH] filter out duplicate tasks --- src/model/column.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/model/column.rs b/src/model/column.rs index 6561e53..fb2e3a6 100644 --- a/src/model/column.rs +++ b/src/model/column.rs @@ -38,14 +38,17 @@ macro_rules! setter { value: &str ) { if let Some(entries) = entries_under(&mut state.entries, index) { - for (path, entry) in entries.into_iter() { + for (p, entry) in entries.into_iter() { if let Some(item) = entry.write().unwrap().$name(&value) { - state.tasks.push(Task { path, item, }); + state.tasks.retain(|t|{(t.path != p) || (t.item.key() != item.key())}); + state.tasks.push(Task { path: p, item, }); }; } } else if let Some(entry) = state.entries.get_mut(index) { + let p = entry.path.clone(); if let Some(item) = entry.$name(&value) { - state.tasks.push(Task { path: entry.path.clone(), item, }); + state.tasks.retain(|t|{(t.path != p) || (t.item.key() != item.key())}); + state.tasks.push(Task { path: p, item, }); }; } }