search: Fix replace all being silently dropped (#50852)

Fixes #50848

### Problem
When Replace All was triggered with a stale search query (i.e., the
query text had changed since the last completed search), the old code
ould restart the search and immediately return, silently discarding the
replace-all intent. This caused the Replace All action to appear to do
nothing on the first try, only working on subsequent attempts once
results were already loaded.

### Fix :
Fix this by introducing a `pending_replace_all` flag on
ProjectSearchView. When Replace All is invoked while a search is in
flight or the query is stale, the flag is set and the action is
deferred.
Once the search completes and `entity_changed` is called, the flag is
checked and `replace_all` is automatically dispatched.

Also disable the Replace Next button in the UI while a search is
underway, since it cannot meaningfully act without up-to-date results.

### Release Notes:

- Fixed "Replace All" in project search not working on the first attempt
when the search query was changed or results hadn't loaded yet.
e5dc2f06c9Om Chillure committed on 3/19/2026, 3:19:03 PM· committed by GitHubparent0238d2d
1 file changedLine totals unavailable