diff --git a/index.html b/index.html
index 57b2ba7..46e5f24 100644
--- a/index.html
+++ b/index.html
@@ -1468,24 +1468,44 @@
scrollBtn.onclick = () => scrollContainer.scrollTo({ top: 0, behavior: 'smooth' });
}
}
-
// --- MOBILE SWIPE GESTURES ---
let touchStartX = 0;
let touchStartY = 0;
let touchEndX = 0;
let touchEndY = 0;
+ let scrollableElement = null;
const MIN_SWIPE_DISTANCE = 50;
const MAX_VERTICAL_DRIFT = 80;
const EDGE_ZONE_LEFT = 200; // Swipe from left triggers Menu
const EDGE_ZONE_RIGHT = 100; // Distance from right edge to likely trigger TOC
+ // Helper function to check if element has horizontal scroll
+ function hasHorizontalScroll(el) {
+ if (!el) return false;
+ return el.scrollWidth > el.clientWidth;
+ }
+
+ // Find closest scrollable parent
+ function findScrollableParent(el) {
+ while (el && el !== document.body) {
+ if (hasHorizontalScroll(el)) {
+ return el;
+ }
+ el = el.parentElement;
+ }
+ return null;
+ }
+
document.addEventListener("touchstart", (e) => {
const t = e.changedTouches[0];
touchStartX = t.clientX;
touchStartY = t.clientY;
touchEndX = t.clientX;
touchEndY = t.clientY;
+
+ // Check if touch started on a horizontally scrollable element
+ scrollableElement = findScrollableParent(e.target);
});
document.addEventListener("touchmove", (e) => {
@@ -1495,6 +1515,12 @@
});
document.addEventListener("touchend", () => {
+ // If we're in a scrollable element, don't trigger swipe gestures
+ if (scrollableElement) {
+ scrollableElement = null;
+ return;
+ }
+
const dx = touchEndX - touchStartX;
const dy = Math.abs(touchEndY - touchStartY);
const screenW = window.innerWidth;