tauri icon indicating copy to clipboard operation
tauri copied to clipboard

[bug] Hiding a window on macOS doesn't unfocus

Open imNel opened this issue 2 years ago • 6 comments

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

imNel avatar Aug 02 '23 06:08 imNel

Any updates on this issue?

YongzeYao avatar Jan 30 '24 12:01 YongzeYao

I have the same problem, does anyone know how to solve it?

zibo-chen avatar Jul 18 '24 04:07 zibo-chen

@imNel How did you solve this problem?

zibo-chen avatar Jul 18 '24 04:07 zibo-chen

this issue still not fixed at latest 2.0 rc

HongyuS avatar Aug 14 '24 09:08 HongyuS

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.

amrbashir avatar Aug 14 '24 13:08 amrbashir