From 9f089c1463fb52f6ca4e058cf60eecb1fd0b5c4d Mon Sep 17 00:00:00 2001 From: chengma Date: Fri, 10 Jul 2026 11:03:59 +0800 Subject: [PATCH] =?UTF-8?q?docs(tasks):=20T-582=20correct=20framing?= =?UTF-8?q?=E2=80=94dialog=20renders=20half,=20GUI=20not=20frozen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更正措辞:症状是弹窗只画一半/显示不全,界面不卡死;根因是弹窗在紧邻 整表重绘未画完时就 exec(),与导入耗时无关。修法(QTimer.singleShot(0) 延迟弹窗到重绘画完再开)不变。 Co-Authored-By: Claude Opus 4.8 --- docs/tasks/T-582.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tasks/T-582.md b/docs/tasks/T-582.md index daddf73..e02fd82 100644 --- a/docs/tasks/T-582.md +++ b/docs/tasks/T-582.md @@ -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 化不在本任务)。