Skip to content
This repository was archived by the owner on Apr 16, 2026. It is now read-only.

Commit 1c58686

Browse files
committed
1 parent 17897ea commit 1c58686

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

src/display/scroll_events.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { chrome, gecko, ie, mac, presto, safari, webkit } from "../util/browser.js"
1+
import { chrome, chrome_version, gecko, ie, mac, presto, safari, webkit } from "../util/browser.js"
22
import { e_preventDefault } from "../util/event.js"
33

44
import { updateDisplaySimple } from "./update_display.js"
@@ -40,6 +40,17 @@ export function wheelEventPixels(e) {
4040
}
4141

4242
export function onScrollWheel(cm, e) {
43+
// On Chrome 102, viewport updates somehow stop wheel-based
44+
// scrolling. Turning off pointer events during the scroll seems
45+
// to avoid the issue.
46+
if (chrome && chrome_version >= 102) {
47+
if (cm.display.chromeScrollHack == null) cm.display.sizer.style.pointerEvents = "none"
48+
else clearTimeout(cm.display.chromeScrollHack)
49+
cm.display.chromeScrollHack = setTimeout(() => {
50+
cm.display.chromeScrollHack = null
51+
cm.display.sizer.style.pointerEvents = ""
52+
}, 100)
53+
}
4354
let delta = wheelEventDelta(e), dx = delta.x, dy = delta.y
4455
let pixelsPerUnit = wheelPixelsPerUnit
4556
if (e.deltaMode === 0) {

src/util/browser.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ export let ie = ie_upto10 || ie_11up || edge
1111
export let ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1])
1212
export let webkit = !edge && /WebKit\//.test(userAgent)
1313
let qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent)
14-
export let chrome = !edge && /Chrome\//.test(userAgent)
14+
export let chrome = !edge && /Chrome\/(\d+)/.exec(userAgent)
15+
export let chrome_version = chrome && +chrome[1]
1516
export let presto = /Opera\//.test(userAgent)
1617
export let safari = /Apple Computer/.test(navigator.vendor)
1718
export let mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent)

0 commit comments

Comments
 (0)