Browse Source

fix: cmd+w won't close all the windows

Tienson Qin 3 years ago
parent
commit
96b9ccb457

+ 4 - 4
src/electron/electron/core.cljs

@@ -238,8 +238,7 @@
            (fn []
              (let [t0 (setup-interceptor!)
                    ^js win (win/create-main-window)
-                   _ (reset! *win win)
-                   *quitting? (atom false)]
+                   _ (reset! *win win)]
                (.. logger (info (str "Logseq App(" (.getVersion app) ") Starting... ")))
 
                (utils/disableXFrameOptions win)
@@ -274,7 +273,7 @@
                                       (.send web-contents "persistent-dbs"))
                                     (async/go
                                       (let [_ (async/<! state/persistent-dbs-chan)]
-                                        (if (or @*quitting? (not mac?))
+                                        (if (or @win/*quitting? (not mac?))
                                           (when-let [win @*win]
                                             (win/destroy-window! win)
                                             (reset! *win nil))
@@ -284,7 +283,8 @@
                                                     (.setFullScreen win false))
                                                 (.hide win)))))))))
 
-               (.on app "before-quit" (fn [_e] (reset! *quitting? true)))
+               (.on app "before-quit" (fn [_e]
+                                        (reset! win/*quitting? true)))
 
                (.on app "activate" #(if @*win (.show win)))))))))
 

+ 2 - 1
src/electron/electron/state.cljs

@@ -8,7 +8,8 @@
   (atom {:graph/current nil
          :git/auto-commit-interval nil
 
-         :config (config/get-config)}))
+         :config (config/get-config)
+         :db/persisted-before-closing-non-main-window? nil}))
 
 (defn set-state!
   [path value]

+ 5 - 1
src/electron/electron/window.cljs

@@ -7,6 +7,8 @@
             [electron.state :as state]
             [clojure.core.async :as async]))
 
+(defonce *quitting? (atom false))
+
 (def MAIN_WINDOW_ENTRY (if dev?
                          ;;"http://localhost:3001"
                          (str "file://" (path/join js/__dirname "index.html"))
@@ -71,7 +73,9 @@
                        (.send web-contents "persistent-dbs"))
                      (async/go
                        (let [_ (async/<! state/persistent-dbs-chan)]
-                         (destroy-window! win))))))
+                         (destroy-window! win)
+                         (when @*quitting?
+                           (async/put! state/persistent-dbs-chan true)))))))
 
 (defn get-all-windows
   []