Skip to content

Commit a1a79e2

Browse files
fix: Unintentional scrolling of tab container while dragging a tab (Acode-Foundation#1382)
Fixes: Acode-Foundation#878 Co-authored-by: 1Code-JS <196545093+1Code-JS@users.noreply.github.com>
1 parent 5847bd3 commit a1a79e2

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/handlers/editorFileTab.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ let parentRight = 0;
6262
* @type {number}
6363
*/
6464
let animationFrame = null;
65+
/**
66+
* @type {number}
67+
*/
68+
let prevScrollLeft = 0;
6569

6670
const MAX_SCROLL_SPEED = 4;
6771

@@ -126,6 +130,9 @@ export default function startDrag(e) {
126130
document.addEventListener("touchend", releaseDrag, opts);
127131
document.addEventListener("touchcancel", releaseDrag, opts);
128132
document.addEventListener("mouseleave", releaseDrag, opts);
133+
134+
prevScrollLeft = $parent.scrollLeft;
135+
$parent.addEventListener("scroll", preventDefaultScroll, opts);
129136
}
130137

131138
/**
@@ -225,6 +232,12 @@ function releaseDrag(e) {
225232
document.removeEventListener("touchend", releaseDrag, opts);
226233
document.removeEventListener("touchcancel", releaseDrag, opts);
227234
document.removeEventListener("mouseleave", releaseDrag, opts);
235+
236+
$parent.removeEventListener("scroll", preventDefaultScroll);
237+
}
238+
239+
function preventDefaultScroll() {
240+
this.scrollLeft = prevScrollLeft;
228241
}
229242

230243
/**
@@ -236,7 +249,7 @@ function scrollContainer() {
236249
function animate() {
237250
const scroll = getScroll();
238251
if (!scroll) return;
239-
$parent.scrollLeft += scroll;
252+
prevScrollLeft = $parent.scrollLeft += scroll;
240253
animationFrame = requestAnimationFrame(animate);
241254
}
242255
}

0 commit comments

Comments
 (0)