From f5ca514bf0a23534f011d45e9df9d303e7772de9 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 12 Dec 2023 12:06:38 -0800 Subject: [PATCH] Avoid notifying editor when wrap width changes Wrap width is already assigned from within draw. It can be called multiple times as taffy iteratively computes the layout. Co-authored-by: Nathan --- crates/editor2/src/display_map/wrap_map.rs | 1 - crates/editor2/src/editor.rs | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/editor2/src/display_map/wrap_map.rs b/crates/editor2/src/display_map/wrap_map.rs index ca9db7754b..6a47a435a3 100644 --- a/crates/editor2/src/display_map/wrap_map.rs +++ b/crates/editor2/src/display_map/wrap_map.rs @@ -184,7 +184,6 @@ impl WrapMap { Ok((snapshot, edits)) => { self.snapshot = snapshot; self.edits_since_sync = self.edits_since_sync.compose(&edits); - cx.notify(); } Err(wrap_task) => { self.background_task = Some(cx.spawn(|this, mut cx| async move { diff --git a/crates/editor2/src/editor.rs b/crates/editor2/src/editor.rs index a11f8ae2cc..b2040aff5b 100644 --- a/crates/editor2/src/editor.rs +++ b/crates/editor2/src/editor.rs @@ -8300,7 +8300,9 @@ impl Editor { self.style.as_ref() } - pub fn set_wrap_width(&self, width: Option, cx: &mut AppContext) -> bool { + // Called by the element. This method is not designed to be called outside of the editor + // element's layout code because it does not notify when rewrapping is computed synchronously. + pub(crate) fn set_wrap_width(&self, width: Option, cx: &mut AppContext) -> bool { self.display_map .update(cx, |map, cx| map.set_wrap_width(width, cx)) }