فهرست منبع

fix: logseq#2419 clear data-active-keystroke when blur

Peng Xiao 4 سال پیش
والد
کامیت
c718eba6af
1فایلهای تغییر یافته به همراه12 افزوده شده و 5 حذف شده
  1. 12 5
      src/main/frontend/ui.cljs

+ 12 - 5
src/main/frontend/ui.cljs

@@ -293,6 +293,12 @@
     (state/sync-system-theme!)
     #(.removeEventListener schemaMedia "change" state/sync-system-theme!)))
 
+(defn set-global-active-keystroke [val]
+  (.setAttribute js/document.body "data-active-keystroke" val))
+
+(defn clear-global-active-keystroke []
+  (set-global-active-keystroke ""))
+
 (defn setup-active-keystroke! []
   (let [active-keystroke (atom #{})
         handle-global-keystroke
@@ -300,17 +306,18 @@
           (let [handler (if down? conj disj)
                 keystroke e.key]
             (swap! active-keystroke handler keystroke))
-          (.setAttribute
-            js/document.body
-            "data-active-keystroke"
-            (apply str (interpose "+" (vec @active-keystroke)))))
+          (set-global-active-keystroke (apply str (interpose "+" (vec @active-keystroke)))))
         keydown-handler (partial handle-global-keystroke true)
         keyup-handler (partial handle-global-keystroke false)]
     (.addEventListener js/window "keydown" keydown-handler)
     (.addEventListener js/window "keyup" keyup-handler)
+    (.addEventListener js/window "blur" clear-global-active-keystroke)
+    (.addEventListener js/window "visibilitychange" clear-global-active-keystroke)
     (fn []
       (.removeEventListener js/window "keydown" keydown-handler)
-      (.removeEventListener js/window "keyup" keyup-handler))))
+      (.removeEventListener js/window "keyup" keyup-handler)
+      (.removeEventListener js/window "blur" clear-global-active-keystroke)
+      (.removeEventListener js/window "visibilitychange" clear-global-active-keystroke))))
 
 (defn on-scroll
   [node on-load on-top-reached]