[bug] Hiding a window on macOS doesn't unfocus
Describe the bug
Running appWindow.hide() doesn't un-focus the window. The default behaviour of cmd+h doesn't have this issue but using .hide() does.
I've tried using setFocus but that only brings the window in focus, not toggle.
Reproduction
This is the code I can use to reproduce the issue:
import { appWindow } from "@tauri-apps/api/window";
await register("CommandOrControl+Shift+Enter", async () => {
if (await appWindow.isVisible()) {
await appWindow.hide();
} else {
await appWindow.show();
await appWindow.center();
await appWindow.setFocus();
}
});
Expected behavior
No response
Platform and versions
[✔] Environment
- OS: Mac OS 13.0.1 X64
✔ Xcode Command Line Tools: installed
✔ rustc: 1.67.1 (d5a82bbd2 2023-02-07)
✔ Cargo: 1.67.1 (8ecd4f20a 2023-01-10)
✔ rustup: 1.25.2 (17db695f1 2023-02-01)
✔ Rust toolchain: stable-aarch64-apple-darwin (default)
- node: 16.20.0
- pnpm: 8.6.2
- yarn: 1.22.19
- npm: 8.19.4
[-] Packages
- tauri [RUST]: 1.4.1
- tauri-build [RUST]: 1.4.0
- wry [RUST]: 0.24.3
- tao [RUST]: 0.16.2
- @tauri-apps/api [NPM]: 1.4.0
- @tauri-apps/cli [NPM]: 1.4.0
[-] App
- build-type: bundle
- CSP: unset
- distDir: ../dist
- devPath: http://localhost:1420/
- framework: SolidJS
- bundler: Vite
Stack trace
No response
Additional context
No response
Any updates on this issue?
I have the same problem, does anyone know how to solve it?
@imNel How did you solve this problem?
this issue still not fixed at latest 2.0 rc
This is not an issue to fix IMO, handing focus off to another window upon hiding is tricky. I don't know much about macOS but probably only the OS knows what last focused window was and even if we know that, I don't think macOS allows an app to focus a window from another app (I could be wrong).
In the past and in different frameworks not necessarily tauri, I've seen some people trick the OS into returning focus by minimizing the window before hiding (works well on Windows and Linux, not sure about macOS). If your app consists of only 1 window, I've also seen some people call app.hide()
I will still leave the issue open, in case someone finds a fix.