diff --git a/src/window-creators/index.js b/src/window-creators/index.js index 80b22c2a..d87f000e 100644 --- a/src/window-creators/index.js +++ b/src/window-creators/index.js @@ -327,7 +327,9 @@ const createLoadingWindow = async () => { 'loadingWindow', { width: 350, - height: 350 + height: 350, + maximizable: false, + fullscreenable: false } ) diff --git a/src/window-creators/layouts/app-init.html b/src/window-creators/layouts/app-init.html index 82f5afe4..29ded962 100644 --- a/src/window-creators/layouts/app-init.html +++ b/src/window-creators/layouts/app-init.html @@ -22,6 +22,44 @@ font-family: "Roboto", sans-serif; } + .win-control-btn { + position: absolute; + top: 0; + right: 0; + display: block; + min-height: 30px; + margin: 0; + padding: 5px; + } + + .minimize-btn { + position: relative; + display: block; + width: 30px; + height: 30px; + border-radius: 50%; + background-color: #172d3e; + transition: background-color .3s; + cursor: pointer; + } + + .minimize-btn::after { + content: ""; + display: block; + position: absolute; + width: 12px; + height: 1px; + background: #9b9a9a; + bottom: 9px; + left: calc((30px - 12px) / 2); + } + + .minimize-btn:hover, + .minimize-btn:active, + .minimize-btn:focus { + background-color: #1c3649; + } + .lds-roller { display: inline-block; position: absolute; @@ -190,6 +228,9 @@ +
+
+
@@ -210,6 +251,15 @@ window.addEventListener('load', () => { const rollers = document.getElementsByClassName('lds-roller') const descriptionElem = document.getElementById('description') + const minBtnElem = document.getElementById('minBtn') + + minBtnElem.onclick = async () => { + try { + await window.bfxReportElectronApi?.hideLoadingWindow() + } catch (err) { + console.error(err) + } + } setTimeout(() => { for (const roller of rollers) { diff --git a/src/window-creators/main-renderer-ipc-bridge/general-ipc-channel-handlers.js b/src/window-creators/main-renderer-ipc-bridge/general-ipc-channel-handlers.js index 8b82107a..7fbb45a2 100644 --- a/src/window-creators/main-renderer-ipc-bridge/general-ipc-channel-handlers.js +++ b/src/window-creators/main-renderer-ipc-bridge/general-ipc-channel-handlers.js @@ -6,10 +6,25 @@ const wins = require('../windows') const IpcChannelHandlers = require('./ipc.channel.handlers') class GeneralIpcChannelHandlers extends IpcChannelHandlers { + #hideLoadingWindow = null + + constructor (...args) { + super(...args) + + // Resolve circular dependency issue + this.#hideLoadingWindow = require( + '../change-loading-win-visibility-state' + ).hideLoadingWindow + } + async exitHandler (event, args) { return app.exit(args?.code ?? 0) } + async hideLoadingWindowHandler (event, args) { + await this.#hideLoadingWindow() + } + async getTitleHandler (event, args) { return wins.mainWindow.getTitle() } diff --git a/src/window-creators/main-renderer-ipc-bridge/preload.js b/src/window-creators/main-renderer-ipc-bridge/preload.js index c64eacc1..24a9ee1f 100644 --- a/src/window-creators/main-renderer-ipc-bridge/preload.js +++ b/src/window-creators/main-renderer-ipc-bridge/preload.js @@ -11,6 +11,7 @@ const CHANNEL_NAMES = { const GENERAL_INVOKE_METHOD_NAMES = { EXIT: 'exit', + HIDE_LOADING_WINDOW: 'hideLoadingWindow', GET_TITLE: 'getTitle' } const GENERAL_EVENT_METHOD_NAMES = {