docs(tasks): T-582 correct framing—dialog renders half, GUI not frozen
更正措辞:症状是弹窗只画一半/显示不全,界面不卡死;根因是弹窗在紧邻 整表重绘未画完时就 exec(),与导入耗时无关。修法(QTimer.singleShot(0) 延迟弹窗到重绘画完再开)不变。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d0dd11f2cb
commit
9f089c1463
+2
-2
@@ -9,9 +9,9 @@ created: 2026-07-10
|
|||||||
|
|
||||||
## 问题 / 背景
|
## 问题 / 背景
|
||||||
|
|
||||||
用户反馈:①采集导入 Excel 后的完成/错误弹窗**偶发只显示一半**。「偶尔」排除纯 HiDPI 缩放(那会稳定半截),指向绘制时序竞态。
|
用户反馈:①采集导入 Excel 后的完成/错误弹窗**偶发只显示一半、显示不全**。**界面本身不卡死**——导入通常很快、无可感知冻结,纯粹是弹窗画不全。「偶尔」也排除纯 HiDPI 缩放(那会稳定半截),指向绘制时序竞态。
|
||||||
|
|
||||||
已核代码事实:①导入在 GUI 线程**同步**执行(`app/gui/tabs/collect.py:242` `excel.import_tasks(...)` 在 `import_excel` 按钮 handler 内直接调用),解析+入库期间事件循环阻塞;返回后紧接 `refresh_tasks()`(整表重绘)+ 弹窗,模态框在积压重绘未冲刷时被 `exec()`,首帧几何/内容没算稳 → 偶发半截。
|
已核代码事实:①导入返回后在**同一调用栈**里紧接 `refresh_tasks()`(整表重绘)后立即 `exec()` 弹窗(`app/gui/tabs/collect.py:242` 起)。模态框在这次整表重绘尚未画完时就打开,首帧几何/内容没算稳 → 偶发只画一半。**与导入是否耗时无关**:只要弹窗在待处理重绘之前 `exec()` 就可能半截,所以修法不是"别阻塞",而是"让弹窗晚一拍、等重绘画完再开"。
|
||||||
|
|
||||||
范围收敛:本任务**只修导入这一处弹窗**,不建统一弹窗 helper、不重构其它 `QMessageBox` 调用点、不改导入线程模型(导入 worker 化不在本任务)。
|
范围收敛:本任务**只修导入这一处弹窗**,不建统一弹窗 helper、不重构其它 `QMessageBox` 调用点、不改导入线程模型(导入 worker 化不在本任务)。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user