Skip to content

feat: 编辑区缩放支持快捷键与滚轮 - #262

Closed
runningwaterpro wants to merge 1 commit into
Auto-Plugin:mainfrom
runningwaterpro:feat/editor-zoom-shortcuts
Closed

runningwaterpro wants to merge 1 commit into
Auto-Plugin:mainfrom
runningwaterpro:feat/editor-zoom-shortcuts

Conversation

@runningwaterpro

Copy link
Copy Markdown
Contributor

用户可见变化

底部状态栏的 [−] [100%] [+] 之外,现在还可以用键盘和触控板调整当前标签的编辑内容显示比例:

操作 效果
Ctrl/Cmd + = / Ctrl/Cmd + + 放大 10%
Ctrl/Cmd + - 缩小 10%
Ctrl/Cmd + 0 还原为 100%
Ctrl/Cmd + 滚轮 调整倍率
滚轮 保持原有滚动,不受影响

窗口获得焦点就能用,不需要先点击编辑区。触控板一次捏合只走一个 10% 档位,不会一路冲到 50% 或 300%。

解决的实际问题

  • 放大后阅读位置不再跳走:缩放前后按比例还原滚动位置。
  • 辅助工具不跟着变形:代码块的复制按钮和语言/模式选择器在任何倍率下都是原来的大小。
  • 链接提示框位置正确:改挂在 body 上用视口坐标定位,之前挂在编辑区容器里会跟随内容缩放,还会被滚动容器裁掉。

具体行为

  • 每个已打开的标签独立保存 50%~300% 的倍率,每次调整 10%。
  • 新标签默认 100%;关闭标签或重启应用后恢复默认值。
  • 缩放只作用于当前标签的编辑器内容层,不改变标题栏、侧边栏、标签栏和状态栏尺寸。
  • 源码模式与富文本模式共用同一个标签倍率,状态栏显示同一个百分比,不产生第二份状态。
  • 缩放不会修改文档内容、文件路径、保存状态或撤销历史;只读文档同样可以缩放。
  • 达到 50% 或 300% 时,对应按钮和快捷键自动失效。
  • 导出 HTML / Word / PDF 不包含缩放。

兼容性说明(需要评审确认)

  1. 「设为段落」快捷键从 Mod-0 移到 Mod-Shift-0
    Ctrl/Cmd + 0 原本是「设为段落」,与「缩放还原」冲突。配置默认值是 shortcuts: {},所以升级后所有用户都会直接拿到新默认值,不需要迁移。已经手动把「设为段落」绑到 Mod-0 的用户,那条自定义绑定会被缩放快捷键覆盖。

  2. 移除原生菜单的「实际大小」项
    该项用的是 Electron 的 role: "resetZoom",会在按键到达渲染进程之前就重置整个 Chromium 页面缩放,和本功能直接冲突。移除后 Ctrl/Cmd + 0 只作用于编辑区,不再重置整页。

  3. 缩放快捷键不由状态栏以外的地方注册
    主题编辑器窗口内嵌了一个 MilkupEditor 预览。快捷键改由状态栏注册,而状态栏只存在于主编辑器窗口,所以主题编辑器里按 Ctrl/Cmd + 0 不会误触发预览缩放。

验证

  • pnpm test:34 个测试通过
  • pnpm build:通过
  • pnpm dev 启动无渲染进程报错
  • Electron 37(Chromium 138)实测 50% / 100% / 150% / 200% / 300% 五档:
指标 结果
正文高度 12.8 / 25.6 / 38.4 / 51.2 / 76.8 px,严格按倍率缩放
外壳宽度 恒定 1280 px
代码块复制按钮 恒定 72×24 px
代码块选择器 恒定 90×24 px
链接提示框 宽度恒定 384 px,定位偏差 0 px,右边缘自动留 8 px
滚动位置恢复 比例误差 ≤ 0.0006
Ctrl+滚轮 阻止页面缩放 是;普通滚轮不拦截

本次范围

只包含编辑区缩放。不包含双格式剪贴板、侧边栏改动或本地 Agent 配置。

实现复用上游现有的 Milkup 编辑器实例和标签状态,不引入第二份缩放状态。

Related: runningwaterpro#13 #14 #15 #16

现在除了状态栏按钮,还可以用键盘和触控板调整当前标签的编辑内容显示比例,
放大、缩小和还原时阅读位置不会跳走。

- `Ctrl/Cmd + =` 和 `Ctrl/Cmd + +` 放大,`Ctrl/Cmd + -` 缩小,`Ctrl/Cmd + 0` 还原
- 快捷键在主窗口获得焦点时即可生效,不需要先点击编辑区
- `Ctrl/Cmd + 滚轮` 调整倍率,普通滚轮保持原有滚动;触控板一次捏合只走一个 10% 档位
- 缩放前后按比例还原滚动位置,代码块复制按钮和语言/模式选择器保持固定尺寸
- 链接提示框改挂到 body 上用视口坐标定位,不再跟随内容缩放或被滚动容器裁掉
- 移除原生菜单的"实际大小"项,避免和 `Ctrl/Cmd + 0` 抢按键
- "设为段落"快捷键从 `Mod-0` 移到 `Mod-Shift-0`,把 `Ctrl/Cmd + 0` 让给缩放还原
- 缩放快捷键由状态栏注册,主题编辑器窗口不再响应

源码模式与富文本共用同一个标签倍率,导出流程不包含缩放,倍率仍只存在于打开标签的内存中。

验证:
- pnpm test:34 个测试通过
- pnpm build:通过
- Electron 37 实测:50%~300% 下正文按倍率缩放、外壳与辅助工具尺寸不变、
  链接提示框定位偏差 0px、滚动位置恢复误差 <= 0.0006

Related: #14
Related: #15
Related: #16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant