Просмотр исходного кода

Improve editor focus events (#20263)

GitOrigin-RevId: 710f42eb633289b43858b8f283735ed0aced5c0b
Alf Eaton 2 лет назад
Родитель
Сommit
53e46632a9

+ 1 - 1
services/web/frontend/js/features/source-editor/extensions/spelling/index.ts

@@ -82,7 +82,7 @@ const spellCheckField = StateField.define<SpellChecker | null>({
       EditorView.domEventHandlers({
         focus: (event, view) => {
           if (view.state.facet(EditorView.editable)) {
-            view.state.field(field)?.spellCheckAsap(view)
+            view.state.field(field)?.scheduleSpellCheck(view)
           }
         },
       }),

+ 9 - 9
services/web/frontend/js/features/source-editor/hooks/use-codemirror-scope.ts

@@ -223,10 +223,16 @@ function useCodeMirrorScope(view: EditorView) {
     view.dispatch(setSpelling(spellingRef.current))
   }, [view, spellCheckLanguage])
 
-  // listen to doc:after-opened, and focus the editor
+  // listen to doc:after-opened, and focus the editor if it's not a new doc
   useEffect(() => {
-    const listener = () => {
-      scheduleFocus(view)
+    const listener: EventListener = event => {
+      const { isNewDoc } = (event as CustomEvent<{ isNewDoc: boolean }>).detail
+
+      if (!isNewDoc) {
+        window.setTimeout(() => {
+          view.focus()
+        }, 0)
+      }
     }
     window.addEventListener('doc:after-opened', listener)
     return () => window.removeEventListener('doc:after-opened', listener)
@@ -554,9 +560,3 @@ function useCodeMirrorScope(view: EditorView) {
 }
 
 export default useCodeMirrorScope
-
-const scheduleFocus = (view: EditorView) => {
-  window.setTimeout(() => {
-    view.focus()
-  }, 0)
-}