diff --git a/src/app/features/room/MediaViewerBody.css.ts b/src/app/features/room/MediaViewerBody.css.ts index 014ea695..9f5bbf0a 100644 --- a/src/app/features/room/MediaViewerBody.css.ts +++ b/src/app/features/room/MediaViewerBody.css.ts @@ -71,10 +71,11 @@ export const image = style({ imageRendering: 'auto', }); -// Swipe-filmstrip neighbour layer — fills the stage, centres its image -// like the current one, and ignores pointers (the current image owns the -// gesture surface). Translated by the parent so prev/next slide with the -// drag. +// Shared filmstrip slide layer — one per ±1 window slot, fills the stage and +// centres its image; the content (img/video) is translated by the parent per +// slot so the strip slides on a swipe. Base `pointer-events: none` is the +// NEIGHBOUR default; the parent overrides it to `auto` on the ACTIVE slide +// (which owns the gesture surface — mouse-pan / native video controls). export const previewLayer = style({ position: 'absolute', inset: 0, diff --git a/src/app/features/room/MediaViewerBody.tsx b/src/app/features/room/MediaViewerBody.tsx index 7e68e02e..639c11c0 100644 --- a/src/app/features/room/MediaViewerBody.tsx +++ b/src/app/features/room/MediaViewerBody.tsx @@ -6,9 +6,10 @@ // • Zoom for images (button row + `+`/`-`/`0` keys). // • Mouse-drag pan when zoomed, with bounds clamping so the // image can't be dragged off the stage. -// • Multi-media navigation: prev / next via on-screen chevrons, -// keyboard arrows, and horizontal swipe (image only — video -// keeps its native seekbar drag). +// • Multi-media navigation: prev / next via on-screen chevrons +// (web only), keyboard arrows, and horizontal swipe. Images glide +// on swipe; videos swipe too but only from above the native control +// band (so the seekbar drag still scrubs) and switch instantly. // • Programmatic `