使用 node.js 获取并设置正确的 window 位置
Get and set correct window position with node.js
在 close
事件中,我坚持 window 的立场如下:
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的位置。 windowing 标题和边框仅在设置时占。
因为这是 cross-platform 代码,我无法在所有平台上测试它(还),我不知道是否有可能获得 windowing 引擎的指标,以便我可以通过编程方式更正它(想想用户在 Windows 上更改 DPI 或主题)。
有没有办法弥补这个?
好的,我搞定了。我检测到相对于已知位置 (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);
出于某种原因需要初始调整大小。如果 window 不够大,在某些平台上似乎根本不会绘制标题和边框。接下来我将它移到原点。 win.x
和 win.y
包含此时的偏移量。第二个 moveTo()
使用更正后的坐标,最后我将 window 调整为实际需要的大小。
在 close
事件中,我坚持 window 的立场如下:
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的位置。 windowing 标题和边框仅在设置时占。
因为这是 cross-platform 代码,我无法在所有平台上测试它(还),我不知道是否有可能获得 windowing 引擎的指标,以便我可以通过编程方式更正它(想想用户在 Windows 上更改 DPI 或主题)。
有没有办法弥补这个?
好的,我搞定了。我检测到相对于已知位置 (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);
出于某种原因需要初始调整大小。如果 window 不够大,在某些平台上似乎根本不会绘制标题和边框。接下来我将它移到原点。 win.x
和 win.y
包含此时的偏移量。第二个 moveTo()
使用更正后的坐标,最后我将 window 调整为实际需要的大小。