Avoid notifying views that have been removed

This commit is contained in:
Antonio Scandurra 2022-05-31 10:36:10 +02:00
parent e067212ad4
commit 34bf248614

View file

@ -2269,6 +2269,13 @@ impl MutableAppContext {
observed_window_id: usize,
observed_view_id: usize,
) {
let callbacks = self.observations.lock().remove(&observed_view_id);
if self
.cx
.views
.contains_key(&(observed_window_id, observed_view_id))
{
if let Some(window) = self.cx.windows.get_mut(&observed_window_id) {
window
.invalidation
@ -2277,13 +2284,7 @@ impl MutableAppContext {
.insert(observed_view_id);
}
let callbacks = self.observations.lock().remove(&observed_view_id);
if let Some(callbacks) = callbacks {
if self
.cx
.views
.contains_key(&(observed_window_id, observed_view_id))
{
for (id, callback) in callbacks {
if let Some(mut callback) = callback {
let alive = callback(self);