feat: Hook in browser actions into electon's BrowserWindow

This commit is contained in:
Susmitha Girumala committed 2021-06-04 12:21:08 -04:00
1 parent 76291896c3
commit 873965d7b7
5 files changed
+58 -4

No files matched your search

+8
View File
@@ -67,6 +67,14 @@ export default function initializeMockIPC(server) {
isWindowsOS() {
return Boolean(window.navigator.userAgent.match(/(windows)/i));
}
/**
* Do nothing when attempting to minimize, toggle fullscreen,
* and close a browser window
*/
minimizeWindow() {}
closeWindow() {}
toggleFullScreenWindow() {}
}
/**
+15
View File
@@ -125,4 +125,19 @@ export default class ApplicationRoute extends Route {
rootEl.classList.remove('rose-theme-light');
}
}
@action
minimize() {
this.ipc.invoke('minimizeWindow');
}
@action
toggleFullScreen() {
this.ipc.invoke('toggleFullscreenWindow');
}
@action
close() {
this.ipc.invoke('closeWindow');
}
}
+7
View File
@@ -120,10 +120,17 @@
.rose-header {
-webkit-app-region: drag;
-webkit-user-select: none;
min-height: sizing.rems(l) * 2;
padding-left: sizing.rems(l) * 3;
position: relative;
.rose-header-brand, .rose-header-nav,
.rose-header-utilities .rose-dropdown,
.rose-header-utilities button {
-webkit-app-region: no-drag;
}
&.header-shrink {
padding-left: 0;
}
+9 -3
View File
@@ -13,9 +13,15 @@
<header.utilities as |utilities|>
{{#if this.isWindowsOS}}
<Rose::Button @iconOnly="cancel-plain" />
<Rose::Button @iconOnly="box-outline"/>
<Rose::Button @iconOnly="minus-plain" />
<Rose::Button @iconOnly="cancel-plain"
{{on 'click' (route-action 'close')}}
/>
<Rose::Button @iconOnly="box-outline"
{{on 'click' (route-action 'toggleFullScreen')}}
/>
<Rose::Button @iconOnly="minus-plain"
{{on 'click' (route-action 'minimize')}}
/>
{{/if}}
{{#if this.session.isAuthenticated}}
+19 -1
View File
@@ -1,4 +1,4 @@
const { shell } = require('electron');
const { shell, BrowserWindow } = require('electron');
const isDev = require('electron-is-dev');
const handle = require('./ipc-handler.js');
const boundaryCli = require('../cli/index.js');
@@ -70,3 +70,21 @@ handle('stop', ({ session_id }) => sessionManager.stopById(session_id));
* Check whether platform is windows
*/
handle('isWindowsOS', () => isWindows());
/**
* Minimize window
*/
handle('minimizeWindow', () => BrowserWindow.getFocusedWindow().minimize());
/**
* Toggle fullscreen window
*/
handle('toggleFullscreenWindow', () => {
const window = BrowserWindow.getFocusedWindow();
window.isMaximized() ? window.unmaximize() : window.maximize();
});
/**
* Close window
*/
handle('closeWindow', () => BrowserWindow.getFocusedWindow().close());