fix(toaster): preemptively remove unused ids in queue
This commit is contained in:
parent
1792cba1f5
commit
806d580aab
1 changed files with 3 additions and 1 deletions
|
|
@ -157,7 +157,6 @@ new_key_type! { pub struct ToastId; }
|
|||
#[derive(Debug, Clone)]
|
||||
pub struct Toasts<Message> {
|
||||
toasts: SlotMap<ToastId, Toast<Message>>,
|
||||
// Note: can ghost keys left from calling `self.remove`
|
||||
queue: VecDeque<ToastId>,
|
||||
on_close: fn(ToastId) -> Message,
|
||||
limit: usize,
|
||||
|
|
@ -205,5 +204,8 @@ impl<Message: Clone + Send + 'static> Toasts<Message> {
|
|||
/// 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue