diff --git a/delphi-backend/UMainForm.pas b/delphi-backend/UMainForm.pas index 2c6092b..ca06c3b 100644 --- a/delphi-backend/UMainForm.pas +++ b/delphi-backend/UMainForm.pas @@ -411,6 +411,11 @@ begin // stays open after the modal closes. LWasHidden := not Self.Visible; RestoreWindowFromTray; + // The window is back but the WebView2 child does NOT hold the keyboard + // focus, so nothing typed reaches the page — Esc did nothing until the user + // clicked the search box. DOM .focus() alone cannot fix that: the OS-level + // focus has to be on the browser control first. + WebBrowser.SetFocus; LWasHiddenJs := BoolToStr(LWasHidden, True).ToLower; // Second arg forFill=true tells JS to SendInput on pick instead of copy. WebBrowser.ExecuteJavaScript( @@ -435,6 +440,7 @@ begin // (taskbar) does NOT count — see BridgeQuickSearchHotkey. LWasHidden := not Self.Visible; RestoreWindowFromTray; + WebBrowser.SetFocus; // see BridgeQuickSearchHotkey — keystrokes need it LWasHiddenJs := BoolToStr(LWasHidden, True).ToLower; WebBrowser.ExecuteJavaScript( 'if(window.Bridge&&typeof Bridge.openQuickSearch==="function")' + diff --git a/js/app.overlays.js b/js/app.overlays.js index 8d314d9..396e08a 100644 --- a/js/app.overlays.js +++ b/js/app.overlays.js @@ -502,7 +502,12 @@ function closeQuickSearchModal(keepClipboard) { if (quickSearchHideAfter) { quickSearchHideAfter = false; if (Bridge.active && typeof Bridge.minimizeToTray === 'function') - Bridge.minimizeToTray(!!keepClipboard); + // Deferred: in fill mode the cancelAutofill above already fired a + // cmd:// navigation, and two back-to-back window.location.href + // assignments COALESCE — only one survives, so the minimise was + // silently dropped and the app stayed on screen. Same pitfall as + // the quickunlock/store + pin/clear pair in doChangeMasterPassword. + setTimeout(() => Bridge.minimizeToTray(!!keepClipboard), 0); } }