From 934474f87e94be94f6db4521b1c1bd55324f45bc Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 14 Oct 2022 12:03:42 -0600 Subject: [PATCH] Remove unconditional invalidation when calling mouse region handlers We want invalidation to opt-in as much as possible. If you want a view to re-render, you need to call `cx.notify`. --- crates/editor/src/hover_popover.rs | 4 ++-- crates/gpui/src/elements/list.rs | 2 ++ crates/gpui/src/presenter.rs | 3 --- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/editor/src/hover_popover.rs b/crates/editor/src/hover_popover.rs index 38b28f06300be3c8b6b56e1b1df588c875277d57..e4b4da68d35ca33e42a7ec47103c3f2b1d2aa1a1 100644 --- a/crates/editor/src/hover_popover.rs +++ b/crates/editor/src/hover_popover.rs @@ -354,7 +354,7 @@ impl InfoPopover { .with_style(style.hover_popover.container) .boxed() }) - .on_move(|_, _| {}) + .on_move(|_, _| {}) // Consume move events so they don't reach regions underneath. .with_cursor_style(CursorStyle::Arrow) .with_padding(Padding { bottom: HOVER_POPOVER_GAP, @@ -400,7 +400,7 @@ impl DiagnosticPopover { bottom: HOVER_POPOVER_GAP, ..Default::default() }) - .on_move(|_, _| {}) + .on_move(|_, _| {}) // Consume move events so they don't reach regions underneath. .on_click(MouseButton::Left, |_, cx| { cx.dispatch_action(GoToDiagnostic) }) diff --git a/crates/gpui/src/elements/list.rs b/crates/gpui/src/elements/list.rs index 7711d4497b374457f4fc77d8a8aabf0dc9a8f04a..d0f87590fc53065a4d27849e947e24def56f28d7 100644 --- a/crates/gpui/src/elements/list.rs +++ b/crates/gpui/src/elements/list.rs @@ -558,6 +558,8 @@ impl StateInner { let visible_range = self.visible_range(height, scroll_top); self.scroll_handler.as_mut().unwrap()(visible_range, cx); } + + cx.notify(); } fn scroll_top(&self, logical_scroll_top: &ListOffset) -> f32 { diff --git a/crates/gpui/src/presenter.rs b/crates/gpui/src/presenter.rs index 4eef9c73985ae093ea1b57f76692881bf0a0fb21..d0d70aae18c40ec5653bf52af2ab9a503bd093ea 100644 --- a/crates/gpui/src/presenter.rs +++ b/crates/gpui/src/presenter.rs @@ -482,9 +482,6 @@ impl Presenter { if let Some(callback) = valid_region.handlers.get(®ion_event.handler_key()) { event_cx.handled = true; - event_cx - .invalidated_views - .insert(valid_region.id().view_id()); event_cx.with_current_view(valid_region.id().view_id(), { let region_event = region_event.clone(); |cx| {