T-572 修复封面画廊方向键焦点

This commit is contained in:
chengma
2026-07-09 15:44:14 +08:00
parent 77e9bf0f5d
commit b88f170b8b
3 changed files with 84 additions and 13 deletions
+5 -2
View File
@@ -3,7 +3,7 @@ id: T-572
title: ②封面画廊打开后上下键切换记录不受按钮焦点影响
phase: 7
deps: [T-569]
status: TODO
status: DONE
created: 2026-07-09
---
@@ -55,4 +55,7 @@ return not isinstance(focus, (QPushButton, QLineEdit, QPlainTextEdit, QComboBox,
## 执行记录
(做完在这里写:改了什么文件、跑了什么验证命令及结果、关键决策。)
- 2026-07-09:完成 T-572。
- `app/gui/tabs/generate.py`:调整 `CoverGalleryDialog._should_consume_navigation_key()`,不再把 `QPushButton` 作为方向键切换的排除焦点;同时给弹窗和子控件安装 `eventFilter`,处理真实 Qt 运行时按键先发给按钮/radio 等子控件、父弹窗 `keyPressEvent()` 收不到的路径。焦点在上一条/下一条/重新生成/保存/取消等按钮上时,`↑ / ↓` 会切换记录;焦点在输入类控件上仍不抢键。
- `tests/test_gui.py`:新增按钮焦点下通过真实子控件事件分发 `Qt.Key_Down` 可切到下一条的回归测试;新增输入框焦点下 `Qt.Key_Down` 不切换记录的保护测试;保留 radio 焦点不改变候选选择的既有测试。
- 验证通过:`py -3.10 -m unittest tests.test_gui`、`python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`py -3.10 -m unittest discover -s tests`、`git diff --check`。