File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ /**
2+ * Prevent default context menu and focus canvas on click and mouseenter.
3+ * @param {Event } event
4+ */
5+ function handleEvent ( event ) {
6+ if ( event . type === "contextmenu" ) {
7+ event . preventDefault ( ) ;
8+ } else if ( event . type === "click" || event . type === "mouseenter" ) {
9+ event . currentTarget . focus ( ) ;
10+ }
11+ }
12+
13+ const eventTypes = [ "contextmenu" , "click" , "mouseenter" ] ;
14+
15+ /**
16+ * Add event listeners to the canvas element to prevent default context menu and focus canvas on click and mouseenter.
17+ * @param {HTMLCanvasElement } canvas
18+ */
19+ export function addCanvasEventListeners ( canvas ) {
20+ if ( ! canvas ) {
21+ return ;
22+ }
23+ eventTypes . forEach ( eventType => canvas . addEventListener ( eventType , handleEvent ) ) ;
24+ }
25+
26+ /**
27+ * Remove event listeners that were installed in `addCanvasEventListeners`.
28+ * @param {HTMLCanvasElement } canvas
29+ */
30+ export function removeCanvasEventListeners ( canvas ) {
31+ if ( ! canvas ) {
32+ return ;
33+ }
34+ eventTypes . forEach ( eventType => canvas . removeEventListener ( eventType , handleEvent ) ) ;
35+ }
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import "./style.css";
22
33import { VtkWASMLoader } from "./wasmLoader" ;
44import { createVtkObjectProxy } from "./core/proxy" ;
5+ import { addCanvasEventListeners , removeCanvasEventListeners } from "./core/canvasEventListeners" ;
56
67// url => loader instance
78const WASM_LOADERS = { } ;
@@ -496,9 +497,7 @@ export class RemoteSession {
496497 canvas = document . createElement ( "canvas" ) ;
497498 canvas . setAttribute ( "class" , canvasSelector . substring ( 1 ) ) ;
498499 canvas . setAttribute ( "tabindex" , "0" ) ;
499- // @contextmenu .prevent
500- // @click ="canvas.focus()"
501- // @mouseenter ="canvas.focus()"
500+ addCanvasEventListeners ( canvas ) ;
502501 }
503502
504503 targetElement . appendChild ( canvas ) ;
@@ -514,6 +513,7 @@ export class RemoteSession {
514513 const canvasSelector = this . getCanvasSelector ( renderWindowId ) ;
515514 const canvas = document . querySelector ( canvasSelector ) ;
516515 if ( canvas ) {
516+ removeCanvasEventListeners ( canvas ) ;
517517 this . offlineCanvasContainer . appendChild ( canvas ) ;
518518 }
519519 }
You can’t perform that action at this time.
0 commit comments