OpenStation's public window-manager path can focus a window on another virtual desktop without showing it. The visible desktop loses its focused state, but the newly “focused” window is still hidden and has a 0×0 rectangle.
How to reproduce
-
Keep Desktop 1 active.
-
Put a minimized Pages window on Desktop 2.
-
From Desktop 1, use the exposed manager path:
const pages = wp.os.windowManager.getById("pages");
wp.os.windowManager.focus(pages);
pages.restore();
-
Inspect the active desktop and focused window.
What should happen
OpenStation should switch to Desktop 2 and reveal Pages, move Pages to the active desktop, or refuse to focus a window it cannot display.
What happens instead
Pages becomes the logical focused window while Desktop 1 stays active. Pages remains display: none with no visible geometry, and the windows the user can see no longer look focused.
The ordinary Pages launcher did not reproduce this because it opens a visible Pages window on the active desktop. The problem is limited to callers using the exposed focus/restore path directly.
Where to look
src/window-manager/index.ts
src/window-manager/desktops.ts
src/window/index.ts
The manager should never leave focus on an invisible cross-desktop target. Focusing one should include the desktop transition or fail without disturbing the visible workspace.
OpenStation's public window-manager path can focus a window on another virtual desktop without showing it. The visible desktop loses its focused state, but the newly “focused” window is still hidden and has a 0×0 rectangle.
How to reproduce
Keep Desktop 1 active.
Put a minimized Pages window on Desktop 2.
From Desktop 1, use the exposed manager path:
Inspect the active desktop and focused window.
What should happen
OpenStation should switch to Desktop 2 and reveal Pages, move Pages to the active desktop, or refuse to focus a window it cannot display.
What happens instead
Pages becomes the logical focused window while Desktop 1 stays active. Pages remains
display: nonewith no visible geometry, and the windows the user can see no longer look focused.The ordinary Pages launcher did not reproduce this because it opens a visible Pages window on the active desktop. The problem is limited to callers using the exposed focus/restore path directly.
Where to look
src/window-manager/index.tssrc/window-manager/desktops.tssrc/window/index.tsThe manager should never leave focus on an invisible cross-desktop target. Focusing one should include the desktop transition or fail without disturbing the visible workspace.