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)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Toasts<Message> {
|
pub struct Toasts<Message> {
|
||||||
toasts: SlotMap<ToastId, Toast<Message>>,
|
toasts: SlotMap<ToastId, Toast<Message>>,
|
||||||
// Note: can ghost keys left from calling `self.remove`
|
|
||||||
queue: VecDeque<ToastId>,
|
queue: VecDeque<ToastId>,
|
||||||
on_close: fn(ToastId) -> Message,
|
on_close: fn(ToastId) -> Message,
|
||||||
limit: usize,
|
limit: usize,
|
||||||
|
|
@ -205,5 +204,8 @@ impl<Message: Clone + Send + 'static> Toasts<Message> {
|
||||||
/// Remove a [`Toast`]
|
/// Remove a [`Toast`]
|
||||||
pub fn remove(&mut self, id: ToastId) {
|
pub fn remove(&mut self, id: ToastId) {
|
||||||
self.toasts.remove(id);
|
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