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 983da559d7de1f3acdb269dc784b86256ebda12b..8fdf94de005bf133e015a8947c60e8ea5fa5245a 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) { - for view_id in invalidation.updated { - self.rendered_views - .insert(view_id, app.render_view(self.window_id, view_id).unwrap()); - } + 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()); + } } pub fn build_scene(