解决win10 electron由resizable:false引发的高度变化bug
本文转载自:https://newsn.net/
本文中描述的是electron
在win
下面的一个现存bug
,electron
官方宣布说已经fix
。但是,在苏南大叔的测试下,截至到发稿,最新版的4.05
和3.14
都仍然存在着本文所描述的问题。所以,严重怀疑electron
官方解决bug
的诚意。
本文测试环境:win10
。
高度不断减小的bug
本文中的bug
发生,是有特定环境的。win10
环境,设置了resizable
为false
,并且存在顶部菜单的情况下,就会触发本文描述的bug
。bug
的现象是:最小化窗体后,再点击出来后,高度就会减小十几像素,而且会不断减小。每restore
一次,窗体高度就减小一次...
注:从最小化或者最大化还原为正常窗体的事件,英文名为restore
。
触发条件再次总结:
经过测试,这个变化的高度,很有可能是顶部菜单的高度。并且,bug
触发的前提是禁止窗体调整大小。关于这个问题,相关的issue
地址如下:
issue
虽然已经被标记为fix
,但是在苏南大叔的测试中,此bug
仍然可以在最新版的electron
中复现...从官方的态度上来看,可以看到似乎是很不在意这事啊....
临时解决方案
本方案也是苏南大叔独家推出的,如果您觉得好用,那么请打赏点赞转发,谢谢。
因为组合的重要因素就是resizable:false
和applicationMenu
。代码监控点,苏南大叔选择的是: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