From 3131835a54db1d35492e0ac96a0354e95162cfc0 Mon Sep 17 00:00:00 2001 From: David <33458145+davidmcpowell@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:48:01 +0100 Subject: [PATCH] Merge pull request #26472 from overleaf/dp-full-project-search-shortcut Add mod-shift-f shortcut to open full-project-search to new editor GitOrigin-RevId: a843c408cc8bd30228cbb7bc17309f4f9ff355b3 --- .../ide-redesign/contexts/rail-context.tsx | 23 +++++++++++++++++++ .../js/shared/context/layout-context.tsx | 2 ++ 2 files changed, 25 insertions(+) diff --git a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx index 85ec482fc0..c52671b42b 100644 --- a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx +++ b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx @@ -1,5 +1,7 @@ +import { sendSearchEvent } from '@/features/event-tracking/search-events' import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel' import useEventListener from '@/shared/hooks/use-event-listener' +import { isMac } from '@/shared/utils/os' import { createContext, Dispatch, @@ -90,6 +92,27 @@ export const RailProvider: FC = ({ children }) => { }, [handlePaneCollapse, selectedTab, isOpen, openTab]) ) + useEventListener( + 'keydown', + useCallback( + (event: KeyboardEvent) => { + if ( + (isMac ? event.metaKey : event.ctrlKey) && + event.shiftKey && + event.code === 'KeyF' + ) { + event.preventDefault() + sendSearchEvent('search-open', { + searchType: 'full-project', + method: 'keyboard', + }) + openTab('full-project-search') + } + }, + [openTab] + ) + ) + const value = useMemo( () => ({ selectedTab, diff --git a/services/web/frontend/js/shared/context/layout-context.tsx b/services/web/frontend/js/shared/context/layout-context.tsx index e82dcbc350..050e679de7 100644 --- a/services/web/frontend/js/shared/context/layout-context.tsx +++ b/services/web/frontend/js/shared/context/layout-context.tsx @@ -145,6 +145,7 @@ export const LayoutProvider: FC = ({ children }) => { ) ) + // TODO ide-redesign-cleanup: remove this listener as we have an equivalent in rail-context useEventListener( 'ui.toggle-review-panel', useCallback(() => { @@ -152,6 +153,7 @@ export const LayoutProvider: FC = ({ children }) => { }, [setReviewPanelOpen]) ) + // TODO ide-redesign-cleanup: remove this listener as we have an equivalent in rail-context useEventListener( 'keydown', useCallback((event: KeyboardEvent) => {