From 59effbc796def37dfae808d8f7349532a3b295d7 Mon Sep 17 00:00:00 2001 From: hazam Date: Sun, 5 Jan 2020 01:02:19 +0500 Subject: [PATCH] Fixed Unable to preventDefault errors in Chrome --- src/index.tsx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index 7ecf57d74..79479f83a 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1110,13 +1110,12 @@ class App extends React.Component<{}, AppState> { id="canvas" width={window.innerWidth - CANVAS_WINDOW_OFFSET_LEFT} height={window.innerHeight - CANVAS_WINDOW_OFFSET_TOP} - onWheel={e => { - e.preventDefault(); - const { deltaX, deltaY } = e; - this.setState(state => ({ - scrollX: state.scrollX - deltaX, - scrollY: state.scrollY - deltaY - })); + ref={canvas => { + if (canvas) { + canvas.addEventListener("wheel", this.handleWheel, { + passive: false + }); + } }} onMouseDown={e => { // only handle left mouse button @@ -1172,7 +1171,7 @@ class App extends React.Component<{}, AppState> { isResizingElements = true; } else { let hitElement = null; - + // We need to to hit testing from front (end of the array) to back (beginning of the array) for (let i = elements.length - 1; i >= 0; --i) { if (hitTest(elements[i], x, y)) { @@ -1394,6 +1393,15 @@ class App extends React.Component<{}, AppState> { ); } + private handleWheel = (e: WheelEvent) => { + e.preventDefault(); + const { deltaX, deltaY } = e; + this.setState(state => ({ + scrollX: state.scrollX - deltaX, + scrollY: state.scrollY - deltaY + })); + }; + componentDidUpdate() { renderScene(rc, context, { scrollX: this.state.scrollX,