feat: Hook in browser actions into electon's BrowserWindow
This commit is contained in:
1 parent
76291896c3
commit
873965d7b7
5 files changed
+58
-4
No files matched your search
@@ -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() {}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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());
|
||||
Reference in new issue
Block a user