Add shift key support for reference cursors and update button text

This commit is contained in:
Ross
2026-04-27 09:26:27 +01:00
parent 776b5faffe
commit 3294151a92
+15 -5
View File
@@ -1118,6 +1118,7 @@ function App({ container_id, imageStacks, autoCacheStack, annotationJson, viewer
}, []); }, []);
const [altPressed, setAltPressed] = useState(false); const [altPressed, setAltPressed] = useState(false);
const [shiftPressed, setShiftPressed] = useState(false);
useEffect(() => { useEffect(() => {
const mainToolGroup = ToolGroupManager.getToolGroup(MAIN_TOOL_GROUP_ID); const mainToolGroup = ToolGroupManager.getToolGroup(MAIN_TOOL_GROUP_ID);
@@ -1144,23 +1145,32 @@ function App({ container_id, imageStacks, autoCacheStack, annotationJson, viewer
useEffect(() => { useEffect(() => {
const handleKeyDown = (e: KeyboardEvent) => { const handleKeyDown = (e: KeyboardEvent) => {
if (e.altKey) setAltPressed(true); if (e.altKey) setAltPressed(true);
if (e.shiftKey) setShiftPressed(true);
}; };
const handleKeyUp = (e: KeyboardEvent) => { const handleKeyUp = (e: KeyboardEvent) => {
if (!e.altKey) setAltPressed(false); if (!e.altKey) setAltPressed(false);
if (!e.shiftKey) setShiftPressed(false);
};
const handleBlur = () => {
setAltPressed(false);
setShiftPressed(false);
}; };
window.addEventListener("keydown", handleKeyDown); window.addEventListener("keydown", handleKeyDown);
window.addEventListener("keyup", handleKeyUp); window.addEventListener("keyup", handleKeyUp);
window.addEventListener("blur", handleBlur);
return () => { return () => {
window.removeEventListener("keydown", handleKeyDown); window.removeEventListener("keydown", handleKeyDown);
window.removeEventListener("keyup", handleKeyUp); window.removeEventListener("keyup", handleKeyUp);
window.removeEventListener("blur", handleBlur);
}; };
}, []); }, []);
useEffect(() => { useEffect(() => {
if (!altEnablesReferenceCursors) return;
const mainToolGroup = ToolGroupManager.getToolGroup(MAIN_TOOL_GROUP_ID); const mainToolGroup = ToolGroupManager.getToolGroup(MAIN_TOOL_GROUP_ID);
if (!mainToolGroup) return; if (!mainToolGroup) return;
if (altPressed) { const modifierActive = shiftPressed || (altEnablesReferenceCursors && altPressed);
if (modifierActive) {
if (!mainToolGroup.hasTool(ReferenceCursors.toolName)) { if (!mainToolGroup.hasTool(ReferenceCursors.toolName)) {
mainToolGroup.addTool(ReferenceCursors.toolName); mainToolGroup.addTool(ReferenceCursors.toolName);
} }
@@ -1171,7 +1181,7 @@ function App({ container_id, imageStacks, autoCacheStack, annotationJson, viewer
mainToolGroup.setToolDisabled(ReferenceCursors.toolName); mainToolGroup.setToolDisabled(ReferenceCursors.toolName);
} }
} }
}, [altPressed, altEnablesReferenceCursors]); }, [altPressed, shiftPressed, altEnablesReferenceCursors]);
// Helper to apply all mouse tool bindings (normal or ctrl) // Helper to apply all mouse tool bindings (normal or ctrl)
const applyMouseToolBindings = useCallback(() => { const applyMouseToolBindings = useCallback(() => {
@@ -4111,8 +4121,8 @@ function App({ container_id, imageStacks, autoCacheStack, annotationJson, viewer
onClick={() => setAltEnablesReferenceCursors((prev) => !prev)} onClick={() => setAltEnablesReferenceCursors((prev) => !prev)}
> >
{altEnablesReferenceCursors {altEnablesReferenceCursors
? "Disable Alt Key for Reference Cursors" ? "Disable Alt Key for Reference Cursors (Shift always works)"
: "Enable Alt Key for Reference Cursors"} : "Enable Alt Key for Reference Cursors (Shift always works)"}
</button> </button>
<button <button
style={{ style={{