Tech
[分享创造] 开发日志:把窗口「一键还原」之前,我先给它加上了「一键撤销」
先说痛点:我每天带着笔记本在家和公司之间跑,插拔一次外接屏,窗口全挤回内建屏,散落在不同的 Mission Control 桌面上,手动归位要好几分钟。为了治这个,我写了个小工具自动恢复窗口布局。 但这篇日志不讲"怎么恢复",讲"恢复错了怎么办"——因为一个替你搬窗口的工具,最危险的时刻不是它不工作,而是它自信满满地把窗口搬到了错误的位置,然后你连它们原来在哪都忘了。自动恢复天然有个问题:**它替你做了决定**。 所以我在功能优先级上做了一个反直觉的决定:**先做撤销,再做恢复**。 ## 1. 每次恢复都是一次"交易",必须能回滚 最早的版本里,恢复是个整体动作:要么全成功,要么全失败。但很快踩了一个真坑:某个窗口因为应用还没启动完,恢复时拿不到窗口句柄,直接跳过,结果整个桌面只恢复了一半。更气人的是,恢复到一半的那几秒,你根本分不清哪些是它搬的、哪些是你自己开的。 现在的逻辑:恢复前先拍一张"现状快照"——每个窗口的位置、大小、所在桌面序号。恢复动作按窗口逐个执行,**每个窗口搬完立刻回读一次几何信息**,没到位就触发回滚:用快照把已经搬过的窗口全部放回去。恢复成功之后,...
Read the full discussion on V2EX
This article was aggregated from V2EX. Click to join the conversation.
View on V2EX