我尝试在Electron应用中重新创建本机Windows控件和应用程序标题栏。我已创建了包含在主项目中的单独组件并使用它们。
以下代码用于最大化/取消最大化窗口控件。单击图标本身会触发重绘,图标从最大化变为非最大化,反之亦然。我希望当窗口最大化/未通过其他方式最大化时,图标也会改变(双击标题栏,将窗口拖动到屏幕顶部......)。
为此,我使用了'maximize'
本身上的'unmaximize'
和Electron.BrowserWindow
个事件,但是从这些处理程序调用{{1}}似乎并不合适实际上触发重绘。
这是我的代码:
m.redraw
我无法在主进程或渲染器进程中看到任何错误。
到目前为止,我已尝试通过'use strict';
const electron = require('electron');
const m = require('mithril');
const browserWindow = electron.remote.getCurrentWindow();
browserWindow.on('maximize', () => {
m.redraw();
});
browserWindow.on('unmaximize', () => {
m.redraw();
});
const Maximize = {
view: vnode => m('.app-window-controls-button.app-window-controls-button-maximize', {
tabindex: -1,
onclick: e => {
e.preventDefault();
if (browserWindow.isMaximized()) {
browserWindow.unmaximize();
} else {
browserWindow.maximize();
}
}
}, [
browserWindow.isMaximized() ? 'unmaximize icon' : 'maximize icon'
]
)
};
module.exports = Maximize;
中redraw
上的方法在vnode.state
中尝试使用@ {1}}上的属性跟踪requestAnimationFrame
窗口最大化状态而不是直接从vnode.state
读取它,似乎没有任何效果。
Electron v1.7.9;秘银1.1.5。