【发布时间】:2015-08-03 14:57:33
【问题描述】:
在close 事件中,我将窗口位置保持如下:
localStorage.lastlayout = JSON.stringify({
"left": win.x,
"top": win.y,
"width": win.width,
"height": win.height
});
在开始时,我使用以下命令恢复它:
data = JSON.parse(localStorage.lastlayout);
win.moveTo(data.left, data.top);
win.resizeTo(data.width, data.height);
问题是位置已关闭。据我所知,我得到了 inner 的位置。设置时我设置了 outer 位置。窗口标题和边框仅在设置时考虑。
由于这是跨平台代码,我无法在所有平台上测试它(还),我不知道是否可以获得窗口引擎的指标,以便我可以通过编程方式更正它(想想用户在 Windows 上更改 DPI 或主题)。
有办法弥补吗?
【问题讨论】:
-
类似的代码通常在我的 Windows 和 Mac 上运行良好。也许在某个地方(package.json?)你将“frame”设置为false?
-
我根本没有设置。从documentation 我看不出这有什么帮助。我不想有一个无框窗口,我需要标题和小部件。我错过了什么吗?我现在无法试用,目前无法访问代码。
-
你见过wiki page on this吗?我认为记住窗口位置应该是清单中
position的一个选项,就此而言,应该有一个使用操作系统默认值的选项。 -
不,我没有。谢谢你把我指向这个页面。我想知道为什么尽管进行了彻底的搜索,我还是找不到它。我现在拥有的在功能上是相同的,但与平台无关。我采用指标而不是嗅探(最佳实践是测试功能是否可用,而不是针对特定代理/平台)。此外,没有水平增量。在 XFCE 上(例如,我测试了几个平台/win-managers)有 3 个像素的水平间隙(基于主题)。因此,确定且优雅的解决方案是测量窗口指标。