diff --git a/frontend/apps/artcraft/app/src/pages/PageScene/PageEditor.tsx b/frontend/apps/artcraft/app/src/pages/PageScene/PageEditor.tsx index 73fb79432f..0227f8e9db 100644 --- a/frontend/apps/artcraft/app/src/pages/PageScene/PageEditor.tsx +++ b/frontend/apps/artcraft/app/src/pages/PageScene/PageEditor.tsx @@ -112,8 +112,15 @@ export const PageEditor = () => { const updateCamera = usePageSceneStore((s) => s.updateCamera); const deleteCamera = usePageSceneStore((s) => s.deleteCamera); const setSelectedCameraId = usePageSceneStore((s) => s.setSelectedCameraId); + // Only stops propagation for clicks on the overlay div itself (the + // transparent gaps between control buttons). Clicks that bubbled up + // from child controls pass through untouched, so React-tree-portal'd + // modals further down the JSX (the upload modals inside Controls3D) + // aren't silenced when the user clicks inside them. const handleOverlayClick = (event: React.MouseEvent) => { - event.stopPropagation(); + if (event.target === event.currentTarget) { + event.stopPropagation(); + } }; useEffect(() => { diff --git a/frontend/apps/artcraft/app/src/pages/PageScene/comps/EngineCanvases.tsx b/frontend/apps/artcraft/app/src/pages/PageScene/comps/EngineCanvases.tsx index b41e095d0e..45e56c46c9 100644 --- a/frontend/apps/artcraft/app/src/pages/PageScene/comps/EngineCanvases.tsx +++ b/frontend/apps/artcraft/app/src/pages/PageScene/comps/EngineCanvases.tsx @@ -17,8 +17,6 @@ export const EditorCanvas = () => { id="video-scene" width="1280px" height="720px" - tabIndex={0} - style={{ outline: "none" }} /> ); };