From 2f35f83d44c6424d402898ce7d5c371648a96f15 Mon Sep 17 00:00:00 2001 From: cary-rowen Date: Mon, 27 Apr 2026 16:34:56 +0800 Subject: [PATCH 1/3] Fix File Explorer search box focus regression --- source/appModules/explorer.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/appModules/explorer.py b/source/appModules/explorer.py index a279f167852..9ad19359852 100644 --- a/source/appModules/explorer.py +++ b/source/appModules/explorer.py @@ -44,6 +44,12 @@ def _get_container(self): return super(MultitaskingViewFrameListItem, self).container +class SearchBoxClient(IAccessible): + # #20021: File Explorer can fire a redundant MSAA focus event on the search band pane + # immediately after the UIA SearchEditBox gains focus. + shouldAllowIAccessibleFocusEvent = False + + # Class for menu items for Windows Places and Frequently used Programs (in start menu) # Also used for desktop items class SysListView32EmittingDuplicateFocusEvents(IAccessible): @@ -225,6 +231,14 @@ def chooseNVDAObjectOverlayClasses(self, obj, clsList): # NOQA: C901 windowClass = obj.windowClassName role = obj.role + if ( + windowClass in ("Search Box", "UniversalSearchBand") + and role == controlTypes.Role.PANE + and isinstance(obj, IAccessible) + ): + clsList.insert(0, SearchBoxClient) + return # Optimization: return early to avoid comparing class names and roles that will never match. + if windowClass == "ToolbarWindow32": if role != controlTypes.Role.POPUPMENU: try: From 20dd71e7102c6953f11d62fe9dbaa4ccf4e0797b Mon Sep 17 00:00:00 2001 From: cary-rowen Date: Fri, 8 May 2026 09:37:15 +0800 Subject: [PATCH 2/3] Update changes --- user_docs/en/changes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index b9b38b1655d..03b5f42ac3b 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -65,6 +65,7 @@ The setting is disabled by default. (#20013, @LeonarddeR) * Capital indicators are now correctly announced when selecting single characters. (#19505, @cary-rowen) * Configuration profile triggers now activate when the Add-on Store is open. (#19583, @bramd) * After cancelling an add-on download and reopening the Add-on Store, downloading another add-on no longer fails. (#20015, @Cary-rowen) +* In File Explorer, pressing `Ctrl+F` once again focuses the search box without subsequently reporting a pane. (#20021, @Cary-rowen) * MathML in Chromium is more reliably read after NVDA starts or restarts. (#19813, @RyanMcCleary) * Decorative Unicode letters such as negative squared, negative circled, and regional indicator symbol characters are now normalized to their base Latin letters when Unicode normalization is enabled. (#19608, @bramd) * NVDA no longer crashes when the Add-on Store download directory cannot be cleaned up due to file permission errors. (#19202, @christopherpross) From af2ad3612db32f2be51eab74075e4653db97bf8e Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Fri, 8 May 2026 11:40:39 +1000 Subject: [PATCH 3/3] Apply suggestion from @seanbudd --- user_docs/en/changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index 03b5f42ac3b..c696c828d4b 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -65,7 +65,7 @@ The setting is disabled by default. (#20013, @LeonarddeR) * Capital indicators are now correctly announced when selecting single characters. (#19505, @cary-rowen) * Configuration profile triggers now activate when the Add-on Store is open. (#19583, @bramd) * After cancelling an add-on download and reopening the Add-on Store, downloading another add-on no longer fails. (#20015, @Cary-rowen) -* In File Explorer, pressing `Ctrl+F` once again focuses the search box without subsequently reporting a pane. (#20021, @Cary-rowen) +* In File Explorer, pressing `ctrl+f` once again focuses the search box without subsequently reporting a pane. (#20021, @Cary-rowen) * MathML in Chromium is more reliably read after NVDA starts or restarts. (#19813, @RyanMcCleary) * Decorative Unicode letters such as negative squared, negative circled, and regional indicator symbol characters are now normalized to their base Latin letters when Unicode normalization is enabled. (#19608, @bramd) * NVDA no longer crashes when the Add-on Store download directory cannot be cleaned up due to file permission errors. (#19202, @christopherpross)