Repository navigation
修复内容
🐛 拖动窗口边缘卡 10 秒 —— 根因确诊
症状:任何 resize(最大化/还原/拖拽边框)都卡到几乎不可用。
根因(用脚本逐个隔离定位,诊断脚本见 _scratch/):
- 真凶是
ttk.Scrollbar(表格区两个滚动条)。 - ttk 滚动条带主题引擎的复杂样式计算,Treeview 尺寸变化 → 滚动条重算范围
→ 反向触发 Treeview 调整 → 连锁重排。 - 垂直+水平两个滚动条叠加成 394ms/次,拖动边框时每移动一次触发一次 → 卡 10 秒。
- 实测对比:无滚动条 54ms / 仅垂直 159ms / 仅水平 219ms / 垂直+水平 394ms。
修复:表格区滚动条 ttk.Scrollbar → 原生 tk.Scrollbar(轻量无主题开销),
resize 耗时从 394ms → 48ms(提速 88%),滚动功能完整保留。
🔧 启动自动扫描改为默认关闭
早期「启动 200ms 后自动扫描一次」本意是「打开即见结果」,
但用户感觉自作主张,且扫描线程在后台抢资源加重卡顿。
现改为默认关闭,需要时点「一键扫描」手动触发。
设环境变量 SUBSCOPE_AUTOSCAN=1 可恢复自动扫描行为。
🧹 其他优化
- 移除
WS_EX_COMPOSITED双缓冲默认启用(对 Tk 是性能灾难,卡 10 秒)。 - 移除
<Configure>事件中的update_idletasks()(每次鼠标移动同步重绘全界面)。 - 保留 v1.2.8 的
GetAncestor(GA_ROOT)改对顶层 HWND + 类背景画刷 +WM_ERASEBKGND子类化 +DwmSetWindowAttribute关 DWM 动画。
已知限制
- 点「一键扫描」完成后表格全量重建,可能瞬时闪一下(扫描完成瞬间 Treeview 清空重建,非性能问题,仅视觉)。
- 黑闪(v1.2.3 的 DWM 层修复)仍需真实屏幕确认。