import BasicWidget from "./basic_widget.js"; import options from "../services/options.js"; import utils from "../services/utils.js"; const TPL = `
`; export default class TitleBarButtonsWidget extends BasicWidget { doRender() { if (!utils.isElectron() || options.is('nativeTitleBarVisible')) { return this.$widget = $('
'); } this.$widget = $(TPL); this.contentSized(); const $topBtn = this.$widget.find(".top-btn"); const $minimizeBtn = this.$widget.find(".minimize-btn"); const $maximizeBtn = this.$widget.find(".maximize-btn"); const $closeBtn = this.$widget.find(".close-btn"); // When the window is restarted, the window will not be reset when it is set to the top, // so get the window status and set the icon background setTimeout(() => { const remote = utils.dynamicRequire('@electron/remote'); if (remote.BrowserWindow.getFocusedWindow()?.isAlwaysOnTop()) { $topBtn.addClass('active'); } }, 1000); $topBtn.on('click', () => { $topBtn.trigger('blur'); const remote = utils.dynamicRequire('@electron/remote'); const focusedWindow = remote.BrowserWindow.getFocusedWindow(); const isAlwaysOnTop = focusedWindow.isAlwaysOnTop() if (isAlwaysOnTop) { focusedWindow.setAlwaysOnTop(false) $topBtn.removeClass('active'); } else { focusedWindow.setAlwaysOnTop(true); $topBtn.addClass('active'); } }); $minimizeBtn.on('click', () => { $minimizeBtn.trigger('blur'); const remote = utils.dynamicRequire('@electron/remote'); remote.BrowserWindow.getFocusedWindow().minimize(); }); $maximizeBtn.on('click', () => { $maximizeBtn.trigger('blur'); const remote = utils.dynamicRequire('@electron/remote'); const focusedWindow = remote.BrowserWindow.getFocusedWindow(); if (focusedWindow.isMaximized()) { focusedWindow.unmaximize(); } else { focusedWindow.maximize(); } }); $closeBtn.on('click', () => { $closeBtn.trigger('blur'); const remote = utils.dynamicRequire('@electron/remote'); remote.BrowserWindow.getFocusedWindow().close(); }); } }