1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-03 08:35:29 +02:00

Desktop: Fixes #7520: Search field doesn't get focus when pressing Ctrl+F (#7529)

This commit is contained in:
Betty Alagwu 2022-12-31 07:54:04 +08:00 committed by GitHub
parent 854f1163cd
commit 5fb01b5c7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 5 deletions

View File

@ -94,7 +94,7 @@ function NoteEditor(props: NoteEditorProps) {
showLocalSearch,
setShowLocalSearch,
searchMarkers: localSearchMarkerOptions,
} = useNoteSearchBar();
} = useNoteSearchBar({ noteSearchBarRef });
// If the note has been modified in another editor, wait for it to be saved
// before loading it in this editor.

View File

@ -12,8 +12,11 @@ export const runtime = (comp: any): CommandRuntime => {
if (comp.editorRef.current && comp.editorRef.current.supportsCommand('search')) {
comp.editorRef.current.execCommand({ name: 'search' });
} else {
comp.setShowLocalSearch(true);
if (comp.noteSearchBarRef.current) comp.noteSearchBarRef.current.wrappedInstance.focus();
if (comp.noteSearchBarRef.current) {
comp.noteSearchBarRef.current.focus();
} else {
comp.setShowLocalSearch(true);
}
}
},
enabledCondition: 'oneNoteSelected',

View File

@ -1,4 +1,4 @@
import { useState, useCallback } from 'react';
import { useState, useCallback, MutableRefObject, useEffect } from 'react';
import Logger from '@joplin/lib/Logger';
import { SearchMarkers } from './useSearchMarkers';
const CommandService = require('@joplin/lib/services/CommandService').default;
@ -25,10 +25,21 @@ function defaultLocalSearch(): LocalSearch {
};
}
export default function useNoteSearchBar() {
export interface UseNoteSearchBarProps {
noteSearchBarRef: MutableRefObject<any>;
}
export default function useNoteSearchBar({ noteSearchBarRef }: UseNoteSearchBarProps) {
const [showLocalSearch, setShowLocalSearch] = useState(false);
const [localSearch, setLocalSearch] = useState<LocalSearch>(defaultLocalSearch());
useEffect(() => {
if (showLocalSearch && noteSearchBarRef.current) {
noteSearchBarRef.current.focus();
}
}, [showLocalSearch, noteSearchBarRef]);
const onChange = useCallback((query: string) => {
// A query that's too long would make CodeMirror throw an exception
// which would crash the app.

View File

@ -11,6 +11,7 @@ class NoteSearchBar extends React.Component {
this.previousButton_click = this.previousButton_click.bind(this);
this.nextButton_click = this.nextButton_click.bind(this);
this.closeButton_click = this.closeButton_click.bind(this);
this.focus = this.focus.bind(this);
this.backgroundColor = undefined;
}