Skip to content

Commit a13fce2

Browse files
authored
fix(MagnifyTool): Fix MagnifyTool freeze when pressing right click (#2388)
* debug magnify tool * fix * run prettier
1 parent 4a7c39f commit a13fce2

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

packages/tools/src/tools/MagnifyTool.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,15 @@ class MagnifyTool extends BaseTool {
204204
triggerAnnotationRenderForViewportIds(viewportIdsToRender);
205205
};
206206

207+
_cancelCallback = (evt: EventTypes.InteractionEventType) => {
208+
// Empêche l'affichage du menu contextuel par défaut du navigateur
209+
evt.preventDefault();
210+
evt.stopPropagation();
211+
212+
// Appelle la fonction qui désactive et nettoie l'outil
213+
this._dragEndCallback(evt);
214+
};
215+
207216
_dragCallback = (evt: EventTypes.InteractionEventType) => {
208217
const eventDetail = evt.detail;
209218

@@ -253,7 +262,15 @@ class MagnifyTool extends BaseTool {
253262
};
254263

255264
_dragEndCallback = (evt: EventTypes.InteractionEventType) => {
256-
const { element } = evt.detail;
265+
let { element } = evt.detail;
266+
267+
if (element === undefined) {
268+
const { enabledElement } = this.editData;
269+
270+
const { viewport } = enabledElement;
271+
element = viewport.element;
272+
}
273+
257274
const enabledElement = getEnabledElement(element);
258275
const { renderingEngine } = enabledElement;
259276

@@ -289,6 +306,11 @@ class MagnifyTool extends BaseTool {
289306
this._dragEndCallback as EventListener
290307
);
291308

309+
element.addEventListener(
310+
'contextmenu',
311+
this._cancelCallback as EventListener
312+
);
313+
292314
element.addEventListener(
293315
Events.TOUCH_END,
294316
this._dragEndCallback as EventListener
@@ -314,6 +336,11 @@ class MagnifyTool extends BaseTool {
314336
Events.MOUSE_CLICK,
315337
this._dragEndCallback as EventListener
316338
);
339+
340+
element.removeEventListener(
341+
'contextmenu',
342+
this._cancelCallback as EventListener
343+
);
317344
element.removeEventListener(
318345
Events.TOUCH_END,
319346
this._dragEndCallback as EventListener

0 commit comments

Comments
 (0)