diff --git a/src/components/HomeClient.tsx b/src/components/HomeClient.tsx index e78e977..a45ee07 100644 --- a/src/components/HomeClient.tsx +++ b/src/components/HomeClient.tsx @@ -424,6 +424,7 @@ export default function HomeClient({ content }: HomeClientProps) { ); const [dockKeysVisible, setDockKeysVisible] = useState(true); const dockKeysVisibleRef = useRef(true); + const [virtualKeysOpen, setVirtualKeysOpen] = useState(false); const scrollProgressRef = useSmoothScrollProgress(heroRef, (value) => { if (!shellRef.current) { return; @@ -462,6 +463,10 @@ export default function HomeClient({ content }: HomeClientProps) { if (dockKeysVisibleRef.current !== nextDockKeysVisible) { dockKeysVisibleRef.current = nextDockKeysVisible; setDockKeysVisible(nextDockKeysVisible); + // Close virtual keys when dock becomes hidden + if (!nextDockKeysVisible) { + setVirtualKeysOpen(false); + } } }); const isMobile = useMediaQuery("(max-width: 900px)"); @@ -501,7 +506,6 @@ export default function HomeClient({ content }: HomeClientProps) { shift: false, alt: false, }); - const [virtualKeysOpen, setVirtualKeysOpen] = useState(false); const mobileModifiersRef = useRef(mobileModifiers); const handleSceneReady = useCallback(() => { setSceneReady(true); @@ -656,12 +660,6 @@ export default function HomeClient({ content }: HomeClientProps) { mobileModifiersRef.current = mobileModifiers; }, [mobileModifiers]); - useEffect(() => { - if (!dockKeysVisible && virtualKeysOpen) { - setVirtualKeysOpen(false); - } - }, [dockKeysVisible, virtualKeysOpen]); - useEffect(() => { screenAspectRef.current = screenAspect; }, [screenAspect]); diff --git a/src/components/hero/HeroScene.tsx b/src/components/hero/HeroScene.tsx index b17d92b..15f43a2 100644 --- a/src/components/hero/HeroScene.tsx +++ b/src/components/hero/HeroScene.tsx @@ -292,7 +292,6 @@ function ComputerModel({ onScreenMeshAction, onCameraRig, onContentReady, - isMobile, usePhoneRig, shadowsEnabled, allowTerminalTexture, @@ -307,7 +306,6 @@ function ComputerModel({ onScreenMeshAction?: (mesh: Mesh | null) => void; onCameraRig?: (rig: CameraRig) => void; onContentReady?: () => void; - isMobile: boolean; usePhoneRig: boolean; shadowsEnabled: boolean; allowTerminalTexture: boolean; @@ -788,6 +786,7 @@ function ComputerModel({ scene, setPlaneColor, usePhoneRig, + shadowsEnabled, ]); useEffect(() => { @@ -1113,7 +1112,6 @@ function SceneContent({ scrollProgressRef, noteTexts, onDebugAction, - onFocusAction, onScreenAspectAction, onReadyAction, interactionActive, @@ -1627,7 +1625,6 @@ function SceneContent({ onScreenMeshAction={handleScreenMesh} onCameraRig={handleCameraRig} onContentReady={handleContentReady} - isMobile={isMobile} usePhoneRig={usePhoneRig} shadowsEnabled={shadowsEnabled} allowTerminalTexture={true}