From 1dc642248691c336eef28029c03ad41dc1c7be31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toni=20F=C3=B6rster?= Date: Wed, 9 Aug 2023 00:08:32 +0200 Subject: [PATCH] Mac Stuff (#2069) * add delete and select all to the nodes menu * use proper delete and multiselect keycode on mac --- src/main/gui/menu.ts | 30 ++++++++++++++++++++++++ src/renderer/components/ReactFlowBox.tsx | 11 +++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/main/gui/menu.ts b/src/main/gui/menu.ts index 3530bd22c..5e7f4660d 100644 --- a/src/main/gui/menu.ts +++ b/src/main/gui/menu.ts @@ -224,6 +224,36 @@ export const setMainMenu = ({ mainWindow, menuData, enabled = false }: MainMenuA }, enabled, }, + { + label: 'Delete', + click: () => { + mainWindow.webContents.sendInputEvent({ + type: 'keyDown', + keyCode: 'Backspace', + modifiers: ['cmd'], + }); + mainWindow.webContents.sendInputEvent({ + type: 'keyUp', + keyCode: 'Backspace', + modifiers: ['cmd'], + }); + }, + }, + { + label: 'Select All', + click: () => { + mainWindow.webContents.sendInputEvent({ + type: 'keyDown', + keyCode: 'a', + modifiers: ['cmd'], + }); + mainWindow.webContents.sendInputEvent({ + type: 'keyUp', + keyCode: 'a', + modifiers: ['cmd'], + }); + }, + }, { type: 'separator' }, { label: 'Duplicate', diff --git a/src/renderer/components/ReactFlowBox.tsx b/src/renderer/components/ReactFlowBox.tsx index e2ffc4cce..192a9f3f9 100644 --- a/src/renderer/components/ReactFlowBox.tsx +++ b/src/renderer/components/ReactFlowBox.tsx @@ -25,6 +25,7 @@ import ReactFlow, { } from 'reactflow'; import { useContext, useContextSelector } from 'use-context-selector'; import { EdgeData, NodeData } from '../../common/common-types'; +import { isMac } from '../../common/env'; import { log } from '../../common/log'; import { getFirstPossibleInput, getFirstPossibleOutput } from '../../common/nodes/connectedInputs'; import { @@ -609,6 +610,12 @@ export const ReactFlowBox = memo(({ wrapperRef, nodeTypes, edgeTypes }: ReactFlo [selectionMenu, setSelectedNodes] ); + const multiSelectionKeyCode = useMemo(() => (isMac ? ['Meta'] : ['Control']), []); + const deleteKeyCode = useMemo( + () => (isMac ? ['Backspace', 'Meta+Backspace'] : ['Backspace', 'Delete']), + [] + ); + return ( ['Backspace', 'Delete'], [])} + deleteKeyCode={deleteKeyCode} edgeTypes={edgeTypes} edges={displayEdges} elevateEdgesOnSelect={false} elevateNodesOnSelect={false} maxZoom={8} minZoom={0.125} - multiSelectionKeyCode={useMemo(() => ['Control', 'Meta'], [])} + multiSelectionKeyCode={multiSelectionKeyCode} nodeTypes={nodeTypes} nodes={displayNodes} snapGrid={useMemoArray<[number, number]>([snapToGridAmount, snapToGridAmount])}