mirror of
https://github.com/logseq/logseq.git
synced 2026-05-30 07:29:48 +00:00
fix: toggle spell-check not working
fix https://github.com/logseq/db-test/issues/823
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
[electron.i18n :as i18n]
|
||||
[electron.keychain :as keychain]
|
||||
[electron.logger :as logger]
|
||||
[electron.spell-check :as spell-check]
|
||||
[electron.plugin :as plugin]
|
||||
[electron.server :as server]
|
||||
[electron.shell :as shell]
|
||||
@@ -289,11 +290,13 @@
|
||||
(defmethod handle :quitApp []
|
||||
(.quit app))
|
||||
|
||||
(defmethod handle :userAppCfgs [_window [_ k v]]
|
||||
(defmethod handle :userAppCfgs [window [_ k v]]
|
||||
(let [config (cfgs/get-config)]
|
||||
(if-let [k (and k (keyword k))]
|
||||
(if-not (nil? v)
|
||||
(do (cfgs/set-item! k v)
|
||||
(when (= k :spell-check)
|
||||
(spell-check/apply-window-spellcheck! window (spell-check/session-spellcheck-enabled? v)))
|
||||
(state/set-state! [:config k] v))
|
||||
(cfgs/get-item k))
|
||||
config)))
|
||||
|
||||
11
src/electron/electron/spell_check.cljs
Normal file
11
src/electron/electron/spell_check.cljs
Normal file
@@ -0,0 +1,11 @@
|
||||
(ns electron.spell-check)
|
||||
|
||||
(defn session-spellcheck-enabled?
|
||||
[value]
|
||||
(not= false value))
|
||||
|
||||
(defn apply-window-spellcheck!
|
||||
[^js win enabled?]
|
||||
(when-let [^js session (some-> win .-webContents .-session)]
|
||||
(.setSpellCheckerEnabled session enabled?))
|
||||
win)
|
||||
@@ -9,6 +9,7 @@
|
||||
[electron.context-menu :as context-menu]
|
||||
[electron.i18n :refer [t]]
|
||||
[electron.logger :as logger]
|
||||
[electron.spell-check :as spell-check]
|
||||
[electron.state :as state]
|
||||
[electron.utils :refer [mac? win32? linux? dev? open] :as utils]))
|
||||
|
||||
@@ -45,7 +46,6 @@
|
||||
:sandbox false
|
||||
:webSecurity (not dev?)
|
||||
:contextIsolation true
|
||||
:spellcheck ((fnil identity true) (cfgs/get-item :spell-check))
|
||||
;; Remove OverlayScrollbars and transition `.scrollbar-spacing`
|
||||
;; to use `scollbar-gutter` after the feature is implemented in browsers.
|
||||
:enableBlinkFeatures 'OverlayScrollbars'
|
||||
@@ -56,7 +56,9 @@
|
||||
|
||||
linux?
|
||||
(assoc :icon (node-path/join js/__dirname "icons/logseq.png")))
|
||||
win (BrowserWindow. (clj->js win-opts))]
|
||||
win (BrowserWindow. (clj->js win-opts))
|
||||
spell-check-enabled? (spell-check/session-spellcheck-enabled? (cfgs/get-item :spell-check))]
|
||||
(spell-check/apply-window-spellcheck! win spell-check-enabled?)
|
||||
(.onBeforeSendHeaders (.. session -defaultSession -webRequest)
|
||||
(clj->js {:urls (array "*://*.youtube.com/*")})
|
||||
(fn [^js details callback]
|
||||
|
||||
35
src/test/electron/spell_check_test.cljs
Normal file
35
src/test/electron/spell_check_test.cljs
Normal file
@@ -0,0 +1,35 @@
|
||||
(ns electron.spell-check-test
|
||||
(:require [cljs.test :refer [deftest is testing]]
|
||||
[electron.spell-check]))
|
||||
|
||||
(defn- session-spellcheck-enabled?
|
||||
[value]
|
||||
(when-let [f (resolve 'electron.spell-check/session-spellcheck-enabled?)]
|
||||
(f value)))
|
||||
|
||||
(defn- apply-window-spellcheck!
|
||||
[win enabled?]
|
||||
(when-let [f (resolve 'electron.spell-check/apply-window-spellcheck!)]
|
||||
(f win enabled?)))
|
||||
|
||||
(deftest session-spellcheck-enabled?-test
|
||||
(testing "defaults to enabled unless the stored config is explicitly false"
|
||||
(is (true? (session-spellcheck-enabled? nil)))
|
||||
(is (true? (session-spellcheck-enabled? true)))
|
||||
(is (false? (session-spellcheck-enabled? false)))))
|
||||
|
||||
(deftest apply-window-spellcheck!-test
|
||||
(testing "updates the BrowserWindow session spell checker state"
|
||||
(let [calls (atom [])
|
||||
session (js-obj "spellCheckerEnabled" true)
|
||||
web-contents (js-obj "session" session)
|
||||
win (js-obj "webContents" web-contents)]
|
||||
(aset session "setSpellCheckerEnabled"
|
||||
(fn [enabled?]
|
||||
(swap! calls conj enabled?)
|
||||
(aset session "spellCheckerEnabled" enabled?)))
|
||||
|
||||
(apply-window-spellcheck! win false)
|
||||
|
||||
(is (= [false] @calls))
|
||||
(is (false? (.-spellCheckerEnabled session))))))
|
||||
Reference in New Issue
Block a user