瀏覽代碼

improve(electron): decrease top padding when fullscreen on Mac

charlie 4 年之前
父節點
當前提交
ec94390f3e
共有 4 個文件被更改,包括 29 次插入9 次删除
  1. 2 2
      resources/js/preload.js
  2. 13 6
      src/electron/electron/core.cljs
  3. 11 0
      src/main/frontend/components/theme.css
  4. 3 1
      src/main/frontend/ui.cljs

+ 2 - 2
resources/js/preload.js

@@ -1,6 +1,6 @@
 const fs = require('fs')
 const path = require('path')
-const { ipcRenderer, contextBridge, shell, clipboard, BrowserWindow } = require('electron')
+const { ipcRenderer, contextBridge, shell, clipboard } = require('electron')
 
 const IS_MAC = process.platform === 'darwin'
 const IS_WIN32 = process.platform === 'win32'
@@ -11,7 +11,7 @@ function getFilePathFromClipboard () {
     return rawFilePath.replace(new RegExp(String.fromCharCode(0), 'g'), '')
   } else if (IS_MAC) {
     return clipboard.read('public.file-url').replace('file://', '')
-  } else{
+  } else {
     return clipboard.readText()
   }
 }

+ 13 - 6
src/electron/electron/core.cljs

@@ -54,7 +54,8 @@
 (defn setup-app-manager!
   [^js win]
   (let [toggle-win-channel "toggle-max-or-min-active-win"
-        call-app-channel "call-application"]
+        call-app-channel "call-application"
+        web-contents (. win -webContents)]
     (doto ipcMain
       (.handle toggle-win-channel
                (fn [_ toggle-min?]
@@ -72,11 +73,17 @@
                    (js-invoke app type args)
                    (catch js/Error e
                      (js/console.error e))))))
-    (.. win -webContents (on "new-window"
-                             (fn [e url]
-                               (.. log (info "new-window" url))
-                               (open url)
-                               (.preventDefault e))))
+
+    (.on web-contents  "new-window"
+         (fn [e url]
+           (.. log (info "new-window" url))
+           (open url)
+           (.preventDefault e)))
+
+    (doto win
+      (.on "enter-full-screen" #(.send web-contents "full-screen" "enter"))
+      (.on "leave-full-screen" #(.send web-contents "full-screen" "leave")))
+
     #(do (.removeHandler ipcMain toggle-win-channel)
          (.removeHandler ipcMain call-app-channel))))
 

+ 11 - 0
src/main/frontend/components/theme.css

@@ -127,6 +127,17 @@ html.is-electron {
     .cp__right-sidebar {
       top: 4rem;
     }
+
+    &.is-fullscreen {
+      .cp__header {
+        padding-top: 0;
+        height: 2.6rem;
+
+        &:before {
+          display: none;
+        }
+      }
+    }
   }
 
   #search {

+ 3 - 1
src/main/frontend/ui.cljs

@@ -236,7 +236,9 @@
     (if (util/electron?) (.add cl "is-electron"))
     (if (util/ios?) (.add cl "is-ios"))
     (if (util/mobile?) (.add cl "is-mobile"))
-    (if (util/safari?) (.add cl "is-safari"))))
+    (if (util/safari?) (.add cl "is-safari"))
+    (if (util/electron?)
+      (js/window.apis.on "full-screen" #(js-invoke cl (if (= % "enter") "add" "remove") "is-fullscreen")))))
 
 (defn inject-dynamic-style-node!
   []