Go to file
Jafz2001 575f26fa5b
Some checks failed
Addon CI / addon (arm64, macos-14, mac) (push) Has been cancelled
Addon CI / addon (x64, ubuntu-22.04, linux) (push) Has been cancelled
Addon CI / addon (x64, windows-latest, win) (push) Has been cancelled
Ship CI / CI (push) Has been cancelled
fix(windows): recover orphaned keyboard focus after native VST editor closes
Users reported that while in Rig Builder, suddenly every text box in the
app stops accepting input, app-wide, until they hit the Windows key.

Cause: on Windows, VST editors open as top-level windows owned by the
out-of-process vst-host sandbox (the WndProc crash fix). When that
child-process window closes while holding keyboard focus — the user
clicks its X, or a chain rebuild tears editors down — Windows leaves the
Electron window looking active while the OS keyboard focus points at
nothing: Chromium still gets pointer events but no keys. The Windows key
"fix" works because it forces an OS foreground cycle.

Fix: preload.ts installs a win32-only capture-phase pointerdown watchdog.
A click landing while document.hasFocus() is false means the OS won't
type into the window being clicked — it asks main via window:recoverFocus
to run win.blur() + win.focus() (blur first: in the stale state Electron
may believe the window is already focused, so a bare focus() can no-op).
The user's first click inside the dead window self-heals it, covering
every trigger path without having to enumerate them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 15:36:16 -04:00
.claude/skills Clean release snapshot 2026-06-16 18:48:12 +02:00
.devcontainer ci: repoint desktop build off the deleted slopsmith org 2026-06-17 00:47:43 +02:00
.github/workflows fix(nightly): dedupe publish assets across overlapping globs 2026-07-12 23:09:11 +02:00
.packages Clean release snapshot 2026-06-16 18:48:12 +02:00
.specify Clean release snapshot 2026-06-16 18:48:12 +02:00
cmake Clean release snapshot 2026-06-16 18:48:12 +02:00
docs docs: commit the audio-engine TLC findings + plan this branch implements 2026-07-14 03:24:46 +02:00
JUCE@9971c75b2c Clean release snapshot 2026-06-16 18:48:12 +02:00
resources fix(ci): rename entitlements file — vpk requires .entitlements extension 2026-07-10 15:04:31 +02:00
scripts Linux AppImage self-update on the nightly channel (#119) 2026-07-19 12:15:55 +02:00
src fix(windows): recover orphaned keyboard focus after native VST editor closes 2026-07-21 15:36:16 -04:00
tests Linux AppImage self-update on the nightly channel (#119) 2026-07-19 12:15:55 +02:00
.build-config.json fix(build): make the local + CI Linux build work off main (#26) 2026-06-20 14:32:01 +02:00
.gitignore Clean release snapshot 2026-06-16 18:48:12 +02:00
.gitmodules Clean release snapshot 2026-06-16 18:48:12 +02:00
CMakeLists.txt Clean release snapshot 2026-06-16 18:48:12 +02:00
CONTRIBUTORS.md Clean release snapshot 2026-06-16 18:48:12 +02:00
LICENSE Clean release snapshot 2026-06-16 18:48:12 +02:00
package.json feat(panes): pane pop-out windows + the system tray 2026-07-12 17:22:44 -04:00
THIRD_PARTY_LICENSES.md Clean release snapshot 2026-06-16 18:48:12 +02:00
tsconfig.json Clean release snapshot 2026-06-16 18:48:12 +02:00
WINDOWS_BUILD_REQUIREMENTS.md Repoint dead slopsmith URLs -> got-feedback 2026-06-17 11:02:09 +02:00