Skip to content

feat: 支持在状态栏缩放当前文档内容 - #261

Merged
LarryZhu-dev merged 1 commit into
Auto-Plugin:mainfrom
runningwaterpro:feat/editor-view-zoom-upstream
Sep 25, 2026
Merged

LarryZhu-dev merged 1 commit into
Auto-Plugin:mainfrom
runningwaterpro:feat/editor-view-zoom-upstream

Conversation

@runningwaterpro

@runningwaterpro runningwaterpro commented Sep 25, 2026 •

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

用户现在可以在底部状态栏点击“−”、百分比或“+”,将当前标签的编辑内容在 50%~300% 之间缩放;点击百分比即可恢复到 100%。

- 每个已打开的标签独立保存倍率;新标签默认 100%,关闭标签或重启应用后重置
- 缩放边界只包住当前标签的编辑器内容层,不改变标题栏、侧边栏、标签栏和状态栏尺寸
- 缩放不会修改文档内容、文件路径、保存状态或撤销历史
- 状态栏按钮支持键盘聚焦,并在到达 50% 或 300% 边界时自动禁用
- 使用上游现有的 Milkup 编辑器实例和标签状态,不引入第二份缩放状态

本次 PR 只包含编辑区缩放,不包含快捷键、滚轮缩放或导出改造。

验证:
- pnpm test:29 个测试通过
- pnpm build:通过

Related: #13
@LarryZhu-dev
LarryZhu-dev merged commit 513eb48 into Auto-Plugin:main Sep 25, 2026
@LarryZhu-dev

Copy link
Copy Markdown
Contributor

@runningwaterpro 感谢你的贡献,但 milkup 目前主要在 v2 分支工作,你的修改可能不会再发布为新版本,不过你可以自行打包安装,或向 v2 提交 pr,不胜感激!

@runningwaterpro

Copy link
Copy Markdown
Contributor Author

@runningwaterpro 感谢你的贡献,但 milkup 目前主要在 v2 分支工作,你的修改可能不会再发布为新版本,不过你可以自行打包安装,或向 v2 提交 pr,不胜感激!

好的,后续又提交了几个 PR,我先看看 v2 分支,之后把 PR 关闭。

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.

2 participants