diff --git a/frontend/src/DesktopWorkspace.css b/frontend/src/DesktopWorkspace.css index 835c4f6..1eb3c07 100644 --- a/frontend/src/DesktopWorkspace.css +++ b/frontend/src/DesktopWorkspace.css @@ -32,6 +32,12 @@ position: relative; overflow: hidden; margin: 0; + outline: none; +} + +.desk-canvas:focus, +.desk-canvas:focus-visible { + outline: none; } .desk-empty { diff --git a/frontend/src/DesktopWorkspace.jsx b/frontend/src/DesktopWorkspace.jsx index 7bdebd9..ea34251 100644 --- a/frontend/src/DesktopWorkspace.jsx +++ b/frontend/src/DesktopWorkspace.jsx @@ -1966,6 +1966,7 @@ const DesktopWorkspaceView = () => { useDocumentDrag(); const deferredSelectionRef = useRef(null); + const pointerIntentRef = useRef(null); const pointerStartRef = useRef({ x: 0, y: 0 }); const pointerMovedRef = useRef(false); @@ -2103,19 +2104,14 @@ const DesktopWorkspaceView = () => { const allSizesReady = items.every((doc) => ensureDocumentSize(doc)); - useEffect(() => { - if (typeof window === 'undefined' || typeof onClearSelection !== 'function') { - return undefined; - } - - const handleKeyDown = (event) => { + const handleShellKeyDown = useCallback( + (event) => { if (!event || event.defaultPrevented) { return; } - const key = event.key; - const spacePressed = key === ' ' || key === 'Space' || key === 'Spacebar'; - if (!spacePressed) { + const { key } = event; + if (key !== ' ' && key !== 'Space' && key !== 'Spacebar') { return; } @@ -2133,10 +2129,9 @@ const DesktopWorkspaceView = () => { } } - const hasSelection = Array.isArray(selectedDocumentIds) && selectedDocumentIds.length > 0; - if (hasSelection) { + if (Array.isArray(selectedDocumentIds) && selectedDocumentIds.length > 0) { event.preventDefault(); - onClearSelection(); + onClearSelection?.(); return; } @@ -2144,30 +2139,28 @@ const DesktopWorkspaceView = () => { event.preventDefault(); onCloseDetailPanel(); } - }; - - window.addEventListener('keydown', handleKeyDown, true); - return () => window.removeEventListener('keydown', handleKeyDown, true); - }, [ - onClearSelection, - selectedDocumentIds, - detailPanelOpen, - onCloseDetailPanel, - ]); + }, + [ + detailPanelOpen, + onClearSelection, + onCloseDetailPanel, + selectedDocumentIds, + ], + ); return ( <> -