diff --git a/crates/editor/src/split.rs b/crates/editor/src/split.rs index 570f6c46ddd377b83b3ccda6c19664de48f2a7b7..abee7c6a482fedb66579f28b7636e7e2dc6504cd 100644 --- a/crates/editor/src/split.rs +++ b/crates/editor/src/split.rs @@ -841,7 +841,12 @@ impl SplittableEditor { }); } - fn toggle_split(&mut self, _: &ToggleSplitDiff, window: &mut Window, cx: &mut Context) { + pub fn toggle_split( + &mut self, + _: &ToggleSplitDiff, + window: &mut Window, + cx: &mut Context, + ) { if self.lhs.is_some() { self.unsplit(window, cx); } else { diff --git a/crates/search/src/buffer_search.rs b/crates/search/src/buffer_search.rs index eac830c140107ce822ca6149da296b9e7a7308f6..42b2344316e8d9abe19380b8a4aaaf3538fae9d1 100644 --- a/crates/search/src/buffer_search.rs +++ b/crates/search/src/buffer_search.rs @@ -109,7 +109,6 @@ impl Render for BufferSearchBar { .and_then(|weak| weak.upgrade()) .map(|splittable_editor| { let is_split = splittable_editor.read(cx).is_split(); - let focus_handle = splittable_editor.focus_handle(cx); h_flex() .gap_1() .child( @@ -137,7 +136,7 @@ impl Render for BufferSearchBar { .into_any() })) .on_click({ - let focus_handle = focus_handle.clone(); + let splittable_editor = splittable_editor.downgrade(); move |_, window, cx| { if window.modifiers().secondary() { update_settings_file( @@ -150,9 +149,15 @@ impl Render for BufferSearchBar { ); } if is_split { - focus_handle.focus(window, cx); - window - .dispatch_action(ToggleSplitDiff.boxed_clone(), cx); + splittable_editor + .update(cx, |editor, cx| { + editor.toggle_split( + &ToggleSplitDiff, + window, + cx, + ); + }) + .ok(); } } }), @@ -182,6 +187,7 @@ impl Render for BufferSearchBar { .into_any() })) .on_click({ + let splittable_editor = splittable_editor.downgrade(); move |_, window, cx| { if window.modifiers().secondary() { update_settings_file( @@ -194,9 +200,15 @@ impl Render for BufferSearchBar { ); } if !is_split { - focus_handle.focus(window, cx); - window - .dispatch_action(ToggleSplitDiff.boxed_clone(), cx); + splittable_editor + .update(cx, |editor, cx| { + editor.toggle_split( + &ToggleSplitDiff, + window, + cx, + ); + }) + .ok(); } } }),