From 806d580aab7e77ca95e38c615d160576d8b1e806 Mon Sep 17 00:00:00 2001 From: bbb651 Date: Thu, 22 Aug 2024 16:17:19 +0300 Subject: [PATCH] fix(toaster): preemptively remove unused ids in queue --- src/widget/toaster/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/widget/toaster/mod.rs b/src/widget/toaster/mod.rs index 82ebde82..7a9cea78 100644 --- a/src/widget/toaster/mod.rs +++ b/src/widget/toaster/mod.rs @@ -157,7 +157,6 @@ new_key_type! { pub struct ToastId; } #[derive(Debug, Clone)] pub struct Toasts { toasts: SlotMap>, - // Note: can ghost keys left from calling `self.remove` queue: VecDeque, on_close: fn(ToastId) -> Message, limit: usize, @@ -205,5 +204,8 @@ impl Toasts { /// Remove a [`Toast`] pub fn remove(&mut self, id: ToastId) { self.toasts.remove(id); + if let Some(pos) = self.queue.iter().position(|key| *key == id) { + self.queue.remove(pos); + } } }