Repository navigation
🖱️ MouseClick v3.1.2
本次版本是一次以「架构重构」为主线的重大更新:主题系统与全局快捷键注册逻辑先后完成了底层重构,同时新增了连点器运行反馈,并修复了若干长期存在的视觉与交互缺陷。
✨ 新功能
连点器启停通知重构为「托盘状态 + 声音提示」
- 移除 QSystemTrayIcon::showMessage 系统通知——高频启停时会被系统节流甚至丢失。
- 新增 ClickerStatusFeedback:将运行状态统一投影为 托盘图标 + tooltip + 声音 三重反馈。
- 新增 SoundPlayer:基于 Win32 PlaySound 播放系统提示音(启动 / 停止)。
- 运行态采用全新托盘图标(favicon 叠加绿色状态点),一眼区分「运行中 / 已停止」。
- 设置页新增 「Sound Feedback」 开关,默认开启,并写入 config.ini([Settings] SoundFeedback)。
- 同步更新三语言翻译。
🔧 重构(架构调整)
全局快捷键注册逻辑重构(状态机 + 接口)
- 引入 Hotkey 值对象作为快捷键唯一数据源,从底层键码(event->key() + modifiers())构造,绕过 QKeySequenceEdit 内部的 QKeyMapper。
- 修复严重缺陷:Shift+1 被归一化为 !、且仅需按 1 即可触发的错误。
- 修复:组合键注册后永远停留在「注册中」状态、每次按键重复注册的问题。
- 新增 IHotkeyRegistrar 抽象接口 + QHotkeyRegistrar 实现,实现依赖倒置、可注入 mock 测试。
- 新增 HotkeyCaptureController 状态机(Idle / Capturing / Failed),统一协调「捕获 → 注册 → 持久化」生命周期。
- HotkeyEdit 重写为纯 UI 转发控件;持久化时机改为**「注册成功才写配置」**,取消录制(失焦回退)只恢复旧热键,不再误删原配置。
主题系统:以 QStyle 替换 QSS,重构样式架构
- 新增 SepProxyStyle(QProxyStyle 子类)统一接管全局控件渲染,取代 QSS 样式表。
- 引入语义化颜色 / 间距令牌 tokens.h 与 ThemeState 单例,驱动深 / 浅色主题切换。
- 以自绘 MessageBox 替换 QMessageBox,样式纳入 QStyle 统一体系。
- 源码目录重组为 core / ui / theme / vendor 四层,并按语义更名。
- 移除 assets/qss 下全部样式表及未使用字体。
🐛 修复
- 切换主题后无边框窗口出现 1px 白色边框:定位到 setPalette() 广播 ApplicationPaletteChange 事件,触发 Qt 6.7.3 Windows 插件 QWindowsWindow::setDarkBorder() 将 DWM 深色边框重置为浅色。修复为拦截该事件并排队重设 DWMWA_USE_IMMERSIVE_DARK_MODE,配合 SetWindowPos(SWP_FRAMECHANGED) 强制重绘,边框始终固定深色。
- MessageBox 正文最后一行下伸字符(g/p/q/y/j)被裁切:新增 DescenderSafeLabel(QLabel 子类),重写 sizeHint() 在自然高度上追加「下伸安全区」,并提前字体设置时机。
- 源码中文注释乱码:修复 6 个文件 55 处 U+FFFD + ? 乱码,并将全部源文件统一为无 BOM 编码,消除 git diff 噪声。
📝 其他
- 删除 README 中关于 Star History 的章节。