소스 검색

avoid rechecking window status on every loop

Eugene Pankov 3 년 전
부모
커밋
53cbb8a7e3
2개의 변경된 파일15개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 0
      app/lib/window.ts
  2. 12 1
      tabby-electron/src/services/hostWindow.service.ts

+ 3 - 0
app/lib/window.ts

@@ -303,6 +303,9 @@ export class Window {
         this.window.on('enter-full-screen', () => this.send('host:window-enter-full-screen'))
         this.window.on('leave-full-screen', () => this.send('host:window-leave-full-screen'))
 
+        this.window.on('maximize', () => this.send('host:window-maximized'))
+        this.window.on('unmaximize', () => this.send('host:window-unmaximized'))
+
         this.window.on('close', event => {
             if (!this.closing) {
                 event.preventDefault()

+ 12 - 1
tabby-electron/src/services/hostWindow.service.ts

@@ -15,6 +15,7 @@ export class ElectronHostWindow extends HostWindowService {
     get isFullscreen (): boolean { return this._isFullscreen }
 
     private _isFullscreen = false
+    private _isMaximized = false
 
     constructor (
         zone: NgZone,
@@ -47,6 +48,16 @@ export class ElectronHostWindow extends HostWindowService {
         electron.ipcRenderer.on('host:became-main-window', () => zone.run(() => {
             this.bootstrapData.isMainWindow = true
         }))
+
+        electron.ipcRenderer.on('host:window-maximized', () => zone.run(() => {
+            this._isMaximized = true
+        }))
+
+        electron.ipcRenderer.on('host:window-unmaximized', () => zone.run(() => {
+            this._isMaximized = false
+        }))
+
+        this._isMaximized = this.getWindow().isMaximized()
     }
 
     getWindow (): BrowserWindow {
@@ -74,7 +85,7 @@ export class ElectronHostWindow extends HostWindowService {
     }
 
     isMaximized (): boolean {
-        return this.getWindow().isMaximized()
+        return this._isMaximized
     }
 
     toggleMaximize (): void {