From 0ae7718b97116b54389b8d150b57b39c580120e2 Mon Sep 17 00:00:00 2001 From: silver Date: Wed, 17 Dec 2025 15:40:02 +0100 Subject: [PATCH 1/2] feat: add link to search tab in main menu Signed-off-by: silver --- src/components/ExcalidrawMenu.tsx | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/components/ExcalidrawMenu.tsx b/src/components/ExcalidrawMenu.tsx index c3d9992c..76ae8d3b 100644 --- a/src/components/ExcalidrawMenu.tsx +++ b/src/components/ExcalidrawMenu.tsx @@ -6,7 +6,7 @@ import { useCallback, useEffect, useRef, memo } from 'react' import type { KeyboardEvent as ReactKeyboardEvent } from 'react' import { Icon } from '@mdi/react' -import { mdiMonitorScreenshot, mdiImageMultiple, mdiTimerOutline, mdiVote, mdiGrid } from '@mdi/js' +import { mdiMonitorScreenshot, mdiImageMultiple, mdiTimerOutline, mdiVote, mdiGrid, mdiMagnify } from '@mdi/js' import { MainMenu, CaptureUpdateAction } from '@nextcloud/excalidraw' import { RecordingMenuItem } from './Recording' import { PresentationMenuItem } from './Presentation' @@ -101,6 +101,26 @@ export const ExcalidrawMenu = memo(function ExcalidrawMenu({ fileNameWithoutExte } }, [excalidrawAPI]) + const openLibrarySearch = useCallback(() => { + // Trigger Ctrl+F to open library with search tab + const excalidrawContainer = document.querySelector('.excalidraw') as HTMLElement + if (excalidrawContainer) { + const eventConfig: KeyboardEventInit = { + key: 'f', + code: 'KeyF', + bubbles: true, + cancelable: true, + } + if (isMacPlatform) { + eventConfig.metaKey = true + } else { + eventConfig.ctrlKey = true + } + const event = new KeyboardEvent('keydown', eventConfig) + excalidrawContainer.dispatchEvent(event) + } + }, [isMacPlatform]) + const isMacPlatformRef = useRef(isMacPlatform) useEffect(() => { isMacPlatformRef.current = isMacPlatform @@ -176,6 +196,11 @@ export const ExcalidrawMenu = memo(function ExcalidrawMenu({ fileNameWithoutExte onSelect={() => showVotings()}> {t('whiteboard', 'Votings')} + } + onSelect={openLibrarySearch}> + {t('whiteboard', 'Find text on canvas')} + Date: Tue, 6 Jan 2026 11:18:43 +0100 Subject: [PATCH 2/2] =?UTF-8?q?add=20shortcut=20=E2=8C=98+F=20or=20Ctrl+F?= =?UTF-8?q?=20to=20MainMenu.Item?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: silver --- src/components/ExcalidrawMenu.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/ExcalidrawMenu.tsx b/src/components/ExcalidrawMenu.tsx index 76ae8d3b..bbe933f6 100644 --- a/src/components/ExcalidrawMenu.tsx +++ b/src/components/ExcalidrawMenu.tsx @@ -198,7 +198,8 @@ export const ExcalidrawMenu = memo(function ExcalidrawMenu({ fileNameWithoutExte } - onSelect={openLibrarySearch}> + onSelect={openLibrarySearch} + shortcut={isMacPlatform ? '⌘+F' : 'Ctrl+F'}> {t('whiteboard', 'Find text on canvas')}