在top
事件中,我按如下方式保持窗口位置:
close
一开始,我将其恢复为:
localStorage.lastlayout = JSON.stringify({
"left": win.x,
"top": win.y,
"width": win.width,
"height": win.height
});
问题是该位置已关闭。据我所知,我得到了内部的位置。设置时,我设置外部位置。窗口标题和边框仅在设置时考虑。
由于这是跨平台代码,我无法在所有平台上测试它(还),我不知道是否有可能获得窗口引擎的指标,以便我可以通过编程方式对其进行更正(想想看)用户在Windows上更改DPI或主题。)
有没有办法弥补这个?
答案 0 :(得分:3)
好的,我已经钉了它。我检测到已知位置(0, 0)
的偏移,然后将其从所需位置减去。它不完美但它有效:
win.resizeTo(128, 128);
win.moveTo(0, 0);
log("dbg", "win", "detected metrics: " + win.x + ", " + win.y);
win.moveTo(data.left - win.x, data.top - win.y);
win.resizeTo(data.width, data.height);
由于某种原因,初始调整大小是必要的。如果窗口不够大,看起来在某些平台上根本不绘制标题和边框。接下来我将它移动到原点。 win.x
和win.y
包含此时的偏移量。第二个moveTo()
使用校正的坐标,最后我将窗口调整为实际所需的大小。