From d8752c510bec50331fb72b1e044ae8084ef9076f Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 25 Nov 2022 17:37:15 -0500 Subject: [PATCH] fix(decodeImage):Fix htj2k image decode and mouse key modifiers --- .../src/sharedArrayBufferImageLoader.ts | 2 +- packages/tools/src/enums/ToolBindings.ts | 7 +++++++ .../shared/getActiveToolForMouseEvent.ts | 5 ++++- .../shared/getMouseModifier.ts | 18 ++++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 packages/tools/src/eventDispatchers/shared/getMouseModifier.ts diff --git a/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts b/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts index 94d001b06b..de45a0fe4f 100644 --- a/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts +++ b/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts @@ -4,7 +4,7 @@ import { decodeImageFrame, getImageFrame, external, -} from 'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min'; +} from 'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min.js'; function getImageRetrievalPool() { return external.cornerstone.imageRetrievalPoolManager; diff --git a/packages/tools/src/enums/ToolBindings.ts b/packages/tools/src/enums/ToolBindings.ts index 548f1aecca..21f5424ddd 100644 --- a/packages/tools/src/enums/ToolBindings.ts +++ b/packages/tools/src/enums/ToolBindings.ts @@ -25,6 +25,13 @@ enum KeyboardBindings { Shift = 16, Ctrl = 17, Alt = 18, + Meta = 91, + ShiftCtrl = 1617, + ShiftAlt = 1618, + ShiftMeta = 1691, + CtrlAlt = 1718, + CtrlMeta = 1791, + AltMeta = 1891, } export { MouseBindings, KeyboardBindings }; diff --git a/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts b/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts index a670b0ad9c..6fac058a64 100644 --- a/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +++ b/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts @@ -2,6 +2,7 @@ import { ToolGroupManager } from '../../store'; import { MouseBindings, ToolModes } from '../../enums'; import { keyEventListener } from '../../eventListeners'; import { EventTypes } from '../../types'; +import getMouseModifier from './getMouseModifier'; const { Active } = ToolModes; @@ -22,7 +23,9 @@ export default function getActiveToolForMouseEvent( const mouseEvent = evt.detail.event; // If any keyboard modifier key is also pressed - const modifierKey = keyEventListener.getModifierKey(); + // Use the actual key if set, otherwise get the key from the mouse event. + const modifierKey = + keyEventListener.getModifierKey() || getMouseModifier(mouseEvent); const toolGroup = ToolGroupManager.getToolGroupForViewport( viewportId, diff --git a/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts b/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts new file mode 100644 index 0000000000..019dd25f60 --- /dev/null +++ b/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts @@ -0,0 +1,18 @@ +import { KeyboardBindings as kb } from '../../enums'; + +/** + * Gets the mouse modifier key from a mouse event. + * Supports Shift, Ctrl, Alt, in singly and in combinations of 2 + * Supports Meta singly. + */ +const getMouseModifierKey = (evt) => + (evt.shiftKey && + ((evt.ctrlKey && kb.ShiftCtrl) || + (evt.altKey && kb.ShiftAlt) || + kb.Shift)) || + (evt.ctrlKey && ((evt.altKey && kb.CtrlAlt) || kb.Ctrl)) || + (evt.altKey && kb.Alt) || + (evt.metaKey && kb.Meta) || + undefined; + +export default getMouseModifierKey;