Skip to content

v1.2.9

Latest

Choose a tag to compare

@cv-superding cv-superding released this 04 Sep 04:59
· 1 commit to main since this release

修复内容

🐛 拖动窗口边缘卡 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 层修复)仍需真实屏幕确认。