From 49ceec512551dec16d4540db0915a4369c59d149 Mon Sep 17 00:00:00 2001 From: mace Date: Wed, 26 Aug 2026 21:27:23 +0200 Subject: [PATCH] Fix article-view swipe being swallowed by Chrome-on-Android back gesture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On real Android touchscreens, a horizontal drag on content with nothing left to scroll horizontally gets claimed by Chrome's native swipe-to-go-back/forward gesture before our own touchend listener (article-view swipe navigation) ever sees it — silently, with no touchend firing at all. Synthetic touch testing (mouse-drag emulation in devtools) doesn't go through that gesture recognizer, so it worked there while doing nothing on an actual phone. Fix: overscroll-behavior-x: contain on body stops Chrome from claiming the gesture for its own navigation, letting our touchend fire normally. Also drops the overflow-x: hidden added to .article-single for the slide transition — body already has it (for the same full-bleed-image reason), so it was redundant. Co-Authored-By: Claude Sonnet 5 --- vue/src/assets/base.css | 6 ++++++ vue/src/components/RssFeeds.vue | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/vue/src/assets/base.css b/vue/src/assets/base.css index 12fe2fd..74d7b13 100644 --- a/vue/src/assets/base.css +++ b/vue/src/assets/base.css @@ -81,6 +81,12 @@ body { wider than the visible content area (scrollbar) and would otherwise introduce a horizontal scrollbar. */ overflow-x: hidden; + /* Without this, a horizontal touch drag on content with nothing left to + scroll (true here, given overflow-x: hidden above) is claimed by + Chrome-on-Android's native swipe-to-go-back/forward gesture before our + own touchend listener (article-view swipe navigation) ever sees it — + the gesture is silently swallowed with no error, no touchend fires. */ + overscroll-behavior-x: contain; color: var(--color-text); background: var(--color-background); transition: color 0.5s, background-color 0.5s; diff --git a/vue/src/components/RssFeeds.vue b/vue/src/components/RssFeeds.vue index 1821b22..db275b1 100644 --- a/vue/src/components/RssFeeds.vue +++ b/vue/src/components/RssFeeds.vue @@ -367,7 +367,6 @@ onMounted(async () => { align-items: center; padding-top: 1em; padding-bottom: 5rem; - overflow-x: hidden; } .article-feature {