Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion anchor.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
- `feature` → 提升次版本号。
- `bugfix` → 提升修订号。
- 仅文档与注释变更默认不触发版本号递增,除非影响发布说明或行为约定。
- 当前约定版本:`v1.7.3`。
- 当前约定版本:`v1.7.5`。

## 数据约束
- 所有待办保存在项目根目录下的 `todos.json`,结构为列表,元素为字典;打包版运行时会改存至用户数据目录(Windows `%APPDATA%\TODOList`,其他平台 `~/.todolist/`)。
Expand Down Expand Up @@ -66,6 +66,8 @@
- 若确认无变更,提交说明需写明“锚点已复盘,无需更新”。

## 最近约定变更
- 2026-01-11:bugfix,修正筛选/排序下拉框最长文本宽度计算逻辑,版本更新至 `v1.7.5`。
- 2026-01-11:bugfix,修复筛选/排序下拉框宽度计算导致文字截断与空白区问题,版本更新至 `v1.7.4`。
- 2026-01-10:bugfix,Windows 打包流程改用 Runner 临时目录缓存 pip,修复缓存路径不存在告警(不触发版本号)。
- 2026-01-09:refactor,GitHub Actions 打包流程增加 pip 缓存以提升构建速度(不触发版本号)。
- 2026-01-08:bugfix,调整新增任务按钮位置避免窄屏与排序选项重叠,版本更新至 `v1.7.3`。
Expand Down
2 changes: 1 addition & 1 deletion todo_app/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class ThemeColors:

# --- 基本信息 ---
APP_NAME = "桌面待办事项 v1"
APP_VERSION = "1.7.3"
APP_VERSION = "1.7.5"

# --- 文件资源 ---
APP_ICON_PATH = "assets/icons/app_icon.svg"
Expand Down
27 changes: 17 additions & 10 deletions todo_app/main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
QMessageBox,
QPushButton,
QSizePolicy,
QStyle,
QStyleOptionComboBox,
QSystemTrayIcon,
QVBoxLayout,
QWidget,
Expand Down Expand Up @@ -274,21 +276,26 @@ def _apply_combo_palette(self, combo: Optional[QComboBox], palette: ThemeColors)
self._update_combo_compact_width(combo)

def _update_combo_compact_width(self, combo: Optional[QComboBox]) -> None:
"""根据内容长度压缩组合框宽度,避免在布局中被拉伸。"""
"""根据内容与样式计算组合框宽度,避免文本被截断或出现空白区。"""

if combo is None:
return

if combo.count() == 0:
return

metrics = combo.fontMetrics()
max_text_width = 0
for index in range(combo.count()):
text_width = metrics.horizontalAdvance(combo.itemText(index))
if text_width > max_text_width:
max_text_width = text_width

# 样式中左右内边距分别为 6px 与 14px,箭头宽度约 9px,额外保留 8px 防止文字贴边。
extra_spacing = 6 + 14 + 9 + 8
combo.setFixedWidth(max_text_width + extra_spacing)
max_text = max(
(combo.itemText(index) for index in range(combo.count())),
key=metrics.horizontalAdvance,
)
text_width = metrics.horizontalAdvance(max_text)
option = QStyleOptionComboBox()
option.initFrom(combo)
option.currentText = max_text
option.fontMetrics = metrics
size = combo.style().sizeFromContents(QStyle.CT_ComboBox, option, QSize(text_width, 0), combo)
combo.setFixedWidth(size.width() + 2)


def _refresh_item_widgets_palette(self, palette: ThemeColors) -> None:
Expand Down