From 65a7076ba89ebee9bc1547d3ad429b6a5ded2d47 Mon Sep 17 00:00:00 2001 From: Smit Barmase Date: Sat, 19 Apr 2025 00:26:02 +0530 Subject: [PATCH] buffer_search: Fix DeployReplace not working when buffer search is already deployed (#29066) Closes #29000 When buffer search is already deployed: 1. If find dialog is enabled, change it to find-and-replace dialog and focuses to it 2. If find-and-replace is enabled, focuses to it Release Notes: - Fixed an issue where invoking `DeployReplace` while the Find dialog was open did not switch to the Find & Replace dialog. - Fixed an issue where invoking `DeployReplace` while the Find & Replace dialog was already open did not focus it. --- crates/search/src/buffer_search.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/search/src/buffer_search.rs b/crates/search/src/buffer_search.rs index 097e49ee75..12b9ed5349 100644 --- a/crates/search/src/buffer_search.rs +++ b/crates/search/src/buffer_search.rs @@ -657,6 +657,16 @@ impl BufferSearchBar { registrar.register_handler(ForDeployed(|this, deploy, window, cx| { this.deploy(deploy, window, cx); })); + registrar.register_handler(ForDismissed(|this, deploy, window, cx| { + this.deploy(deploy, window, cx); + })); + registrar.register_handler(ForDeployed(|this, _: &DeployReplace, window, cx| { + if this.supported_options(cx).find_in_results { + cx.propagate(); + } else { + this.deploy(&Deploy::replace(), window, cx); + } + })); registrar.register_handler(ForDismissed(|this, _: &DeployReplace, window, cx| { if this.supported_options(cx).find_in_results { cx.propagate(); @@ -664,9 +674,6 @@ impl BufferSearchBar { this.deploy(&Deploy::replace(), window, cx); } })); - registrar.register_handler(ForDismissed(|this, deploy, window, cx| { - this.deploy(deploy, window, cx); - })) } pub fn new(