From f408521d12af1003cc52b0f9a67bc816d1d47414 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 6 May 2021 15:13:26 -0600 Subject: [PATCH] Gracefully handle a view being updated and removed in the same tick Co-Authored-By: Max Brunsfeld --- gpui/src/presenter.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gpui/src/presenter.rs b/gpui/src/presenter.rs index 983da559d7..8fdf94de00 100644 --- a/gpui/src/presenter.rs +++ b/gpui/src/presenter.rs @@ -55,15 +55,16 @@ impl Presenter { path } - pub fn invalidate(&mut self, invalidation: WindowInvalidation, app: &AppContext) { + pub fn invalidate(&mut self, mut invalidation: WindowInvalidation, app: &AppContext) { + for view_id in invalidation.removed { + invalidation.updated.remove(&view_id); + self.rendered_views.remove(&view_id); + self.parents.remove(&view_id); + } for view_id in invalidation.updated { self.rendered_views .insert(view_id, app.render_view(self.window_id, view_id).unwrap()); } - for view_id in invalidation.removed { - self.rendered_views.remove(&view_id); - self.parents.remove(&view_id); - } } pub fn build_scene(