fix(product-suite): prevent duplicate drag sorting
This commit is contained in:
+7
-2
@@ -3,7 +3,7 @@ id: T-692
|
||||
title: 商品套图原图拖放重复项修复
|
||||
phase: 7
|
||||
deps: [T-691]
|
||||
status: TODO
|
||||
status: DONE
|
||||
created: 2026-07-23
|
||||
---
|
||||
|
||||
@@ -54,4 +54,9 @@ T-691 为使参考图可以拖到第一位,给每个 `QListWidgetItem` 添加
|
||||
|
||||
## 执行记录
|
||||
|
||||
- 待实现。
|
||||
- 2026-07-23 完成。
|
||||
- 移除 T-691 对真实原图项追加的 `ItemIsDropEnabled`,避免 Qt 将拖到缩略图上的动作走默认复制/插入路径。`ProductOriginalList` 现在在 `startDrag()` 记录单一拖拽项,在内部 `dragEnter/dragMove/drop` 中只接受本列表来源的移动。
|
||||
- 内部 drop 不再调用 `super().dropEvent()`:按目标缩略图和坐标计算插入行,以 `takeItem()` + `insertItem()` 移动原 `QListWidgetItem`;移动前后均检查 asset ID 唯一性,仅顺序实际变化时发送一次 `orderChanged`。原地释放、无拖拽源、跨列表和已存在异常重复 ID 都不回写排序。
|
||||
- 外部文件 URL 拖入继续只发送 `filesDropped`;拉取或生成中的锁定逻辑、SQLite 服务层重复 ID 最后防线、主图刷新样式和历史 job 快照均未改动。已同步 `docs/04-architecture.md` 与 `docs/routes.md`。
|
||||
- 新增 GUI 回归覆盖第二张移到第一张、向后移动、原地释放、无拖拽源和已有重复 ID 防御;现有项目级测试继续验证 SQLite 排序、主图标签和外部文件导入隔离。
|
||||
- 验证通过:`py -3.10 -m unittest tests.test_product_suite_gui tests.test_image_studio tests.test_product_suite`(108项)、`py -3.10 -m unittest discover -s tests`(675项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。离屏 PySide6 有字体目录/插件告警,但无测试失败。
|
||||
|
||||
Reference in New Issue
Block a user