diff --git a/plugin-designs/doxa-research-map/research-map.vue b/plugin-designs/doxa-research-map/research-map.vue index 86ad45591..223d75570 100644 --- a/plugin-designs/doxa-research-map/research-map.vue +++ b/plugin-designs/doxa-research-map/research-map.vue @@ -110,15 +110,10 @@ function _findScrollportAncestor(el) { function _syncScrollZoomToHost(m) { if (!m || !m.scrollZoom) return try { - const doc = document.documentElement - const docScrolls = doc.scrollHeight > window.innerHeight + 4 - const host = (m.getContainer && m.getContainer()) || null - const ancestorScrolls = host ? !!_findScrollportAncestor(host) : false // ★ THE MAP KEEPS THE GESTURE. THE EDGE STRIPS ARE THE WAY PAST IT. - // Driver, 2026-09-24: "two finger scrolling on the map should allow me to interact with the - // map, but instead it just scrolls down past the map and does not interact with the map — - // that's what the scroll side bars are there for, to let me interact with the map AND have a - // way to scroll down past the map." + // Driver-reported, 2026-09-24: a two-finger scroll over the map scrolled the PAGE past it + // instead of interacting with the map, and the side strips exist precisely so a reader can do + // both — work the map, and still have a lane to scroll the page down. // // This used to disable scroll-zoom whenever the page or an ancestor could scroll, which is // ALWAYS true in the research-map-plus-grid composite (a map with a grid stacked under it). @@ -135,9 +130,16 @@ function _syncScrollZoomToHost(m) { // non-interactive and left the strips redundant. Two fixes for one bug, and the second one // silently undid the feature. // - // So: keep scroll-zoom ON, and let the strips carry the page. `docScrolls`/`ancestorScrolls` - // are still computed because the edge affordance below keys its gray indicator off the same - // question — a map with nothing stacked under it should not advertise a scroll lane. + // So: keep scroll-zoom ON, and let the strips carry the page. + // + // ★ THE TWO SCROLL PROBES THAT USED TO SIT HERE ARE GONE, AND THE COMMENT THAT KEPT THEM WAS + // WRONG. It said docScrolls/ancestorScrolls were still computed because "the edge affordance + // keys its gray indicator off the same question". This profile has no such indicator and never + // calls useEdgeScrollAffordance: its .map-scroll-edge strips are background:transparent lanes + // that are always present (see the rules near the bottom of this stylesheet). They were + // function-local consts, computed and discarded — the comment described a consumer that does + // not exist here, which is worse than no comment, because it makes dead code look load-bearing. + // _findScrollportAncestor STAYS: it is still used to pick a second ResizeObserver target below. m.scrollZoom.enable() } catch (_) { /* an engine without scrollZoom must never break the panel */ } }