解决win10 electron由resizable:false引发的高度变化bug

本文转载自:https://newsn.net/

本文中描述的是electronwin下面的一个现存bugelectron官方宣布说已经fix。但是,在苏南大叔的测试下,截至到发稿,最新版的4.053.14都仍然存在着本文所描述的问题。所以,严重怀疑electron官方解决bug的诚意。

win环境,electron如何解决由resizable:false引发的高度变化bug

本文测试环境:win10

高度不断减小的bug

本文中的bug发生,是有特定环境的。win10环境,设置了resizablefalse,并且存在顶部菜单的情况下,就会触发本文描述的bugbug的现象是:最小化窗体后,再点击出来后,高度就会减小十几像素,而且会不断减小。每restore一次,窗体高度就减小一次...

注:从最小化或者最大化还原为正常窗体的事件,英文名为restore

win环境,electron如何解决由resizable:false引发的高度变化bug

触发条件再次总结:

经过测试,这个变化的高度,很有可能是顶部菜单的高度。并且,bug触发的前提是禁止窗体调整大小。关于这个问题,相关的issue地址如下:

issue虽然已经被标记为fix,但是在苏南大叔的测试中,此bug仍然可以在最新版的electron中复现...从官方的态度上来看,可以看到似乎是很不在意这事啊....

win环境,electron如何解决由resizable:false引发的高度变化bug

临时解决方案

本方案也是苏南大叔独家推出的,如果您觉得好用,那么请打赏点赞转发,谢谢。

因为组合的重要因素就是resizable:falseapplicationMenu。代码监控点,苏南大叔选择的是:on('restore')

思路如下:如果是win系统/resizable:false/有菜单,那么在restore的时候,将主动多设置出菜单的高度,经验值是20px

窗体目标宽度300,高度580

重点代码:

判断是否为win:

if(process.platform=="win32"){}

设置/获取窗体大小:

mainWindow.setSize(200,100);

mainWindow.getSize(); //[200,100]

隐藏系统菜单:

import { app,BrowserWindow,Menu } from 'electron';

Menu.setApplicationMenu(null);

判断是否存在菜单:

import { app,BrowserWindow,Menu } from 'electron';

var mm = Menu.getApplicationMenu();

if(!!mm){

//有菜单

}

else{

//没有菜单

}

总结

electron官方正式解决这个问题之前,大家就可以用本文的思路临时解决问题了。本文的方案应该不是最佳方案,欢迎大家演绎此代码并完善。当然最好的办法,就是electron官方真正的解决这个问题,不过也许只能慢慢等待了。

以上是 解决win10 electron由resizable:false引发的高度变化bug 的全部内容, 来源链接: utcz.com/a/118962.html

回到顶部