浏览代码

feat: add native spell checker support

Junyu Zhan 4 年之前
父节点
当前提交
43fe3917a5
共有 1 个文件被更改,包括 25 次插入1 次删除
  1. 25 1
      src/electron/electron/core.cljs

+ 25 - 1
src/electron/electron/core.cljs

@@ -7,7 +7,7 @@
             [promesa.core :as p]
             ["fs-extra" :as fs]
             ["path" :as path]
-            ["electron" :refer [BrowserWindow app protocol ipcMain dialog] :as electron]
+            ["electron" :refer [BrowserWindow app protocol ipcMain dialog Menu MenuItem] :as electron]
             ["electron-window-state" :as windowStateKeeper]
             [clojure.core.async :as async]
             [electron.state :as state]))
@@ -138,6 +138,30 @@
                    (catch js/Error e
                      (js/console.error e))))))
 
+
+    (.on web-contents "context-menu"
+         (fn
+           [_event params]
+           (let [menu (Menu.)
+                 suggestions (. params -dictionarySuggestions)]
+
+             (doseq [suggestion suggestions]
+               (. menu append
+                  (MenuItem. (clj->js {:label
+                                       suggestion
+                                       :click
+                                       (fn [] (. web-contents replaceMisspelling suggestion))}))))
+
+             (when-let [misspelled-word (. params -misspelledWord)]
+               (. menu append
+                  (MenuItem. (clj->js {:label
+                                       "Add to dictionary"
+                                       :click
+                                       (fn [] (.. web-contents -session (addWordToSpellCheckerDictionary misspelled-word)))}))))
+
+             (. menu popup))))
+
+
     (.on web-contents  "new-window"
          (fn [e url]
            (let [url (if (string/starts-with? url "file:")