Переглянути джерело

fix(electron): use different app menu for macos and others

Andelf 3 роки тому
батько
коміт
cb48bf70c8
1 змінених файлів з 38 додано та 22 видалено
  1. 38 22
      src/electron/electron/core.cljs

+ 38 - 22
src/electron/electron/core.cljs

@@ -185,28 +185,44 @@
                    (.showMessageBox dialog (clj->js {:title "Logseq"
                    (.showMessageBox dialog (clj->js {:title "Logseq"
                                                      :icon (path/join js/__dirname "icons/logseq.png")
                                                      :icon (path/join js/__dirname "icons/logseq.png")
                                                      :message (str "Version " updater/electron-version)})))
                                                      :message (str "Version " updater/electron-version)})))
-        template  (clj->js [{:role "fileMenu"
-                             :submenu [{:label "New Window"
-                                        :click (fn []
-                                                 (handler/open-new-window!))
-                                        :accelerator "CommandOrControl+N"
-                                        :acceleratorWorksWhenHidden false}
-                                       {:type "separator"}
-                                       {:role "close"
-                                        :label "Close Window"}
-                                       {:label "Quit Logseq"
-                                        :role "quit"}]}
-                            {:role "editMenu"}
-                            {:role "viewMenu"}
-                            {:role "windowMenu"}
-                            {:role "help"
-                             :submenu [{:label "Official Documentation"
-                                        :click (fn []
-                                                 (.openExternal shell "https://docs.logseq.com/"))}
-                                       {:role "about"
-                                        :label "About Logseq"
-                                        :click about-fn}]}])
-        menu (.buildFromTemplate Menu template)]
+        template (if mac?
+                   [{:label (.-name app)
+                     :submenu [{:role "about"}
+                               {:type "separator"}
+                               {:role "services"}
+                               {:type "separator"}
+                               {:role "hide"}
+                               {:role "hideOthers"}
+                               {:role "unhide"}
+                               {:type "separator"}
+                               {:role "quit"}]}]
+                   [])
+        template (conj template
+                       {:role "fileMenu"
+                        :submenu [{:label "New Window"
+                                   :click (fn []
+                                            (handler/open-new-window!))
+                                   :accelerator "CommandOrControl+N"
+                                   :acceleratorWorksWhenHidden false}
+                                  (if mac?
+                                    {:role "close"}
+                                    {:role "quit"})]}
+                       {:role "editMenu"}
+                       {:role "viewMenu"}
+                       {:role "windowMenu"})
+        ;; Windows has no about role
+        template (conj template
+                       (if mac?
+                         {:role "help"
+                          :submenu [{:label "Official Documentation"
+                                     :click #(.openExternal shell "https://docs.logseq.com/")}]}
+                         {:role "help"
+                          :submenu [{:label "Official Documentation"
+                                     :click #(.openExternal shell "https://docs.logseq.com/")}
+                                    {:role "about"
+                                     :label "About Logseq"
+                                     :click about-fn}]}))
+        menu (.buildFromTemplate Menu (clj->js template))]
     (.setApplicationMenu Menu menu)))
     (.setApplicationMenu Menu menu)))
 
 
 (defn- setup-deeplink! []
 (defn- setup-deeplink! []