Some checks failed
FreeCAD master CI / Prepare (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
FreeCAD master CI / Pixi (push) Has been cancelled
FreeCAD master CI / Ubuntu (push) Has been cancelled
FreeCAD master CI / Windows (push) Has been cancelled
FreeCAD master CI / Lint (push) Has been cancelled
FreeCAD master CI / WrapUp (push) Has been cancelled
Stale Issues / stale (push) Has been cancelled
CodeQL Advanced (c-cpp) / Analyze (c-cpp) (push) Has been cancelled
Push Crowdin Translations / update-crowdin (push) Has been cancelled
Fetch Crowdin Translations / update-crowdin (push) Has been cancelled
Build Release / upload_src (push) Has been cancelled
Build Release / build (10.13, macos-15-intel, osx-64) (push) Has been cancelled
Build Release / build (11.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (15.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (ubuntu-22.04, linux-64) (push) Has been cancelled
Build Release / build (ubuntu-22.04-arm, linux-arm64) (push) Has been cancelled
Build Release / build (windows-latest, win-64) (push) Has been cancelled
Monthly issue metrics / issue metrics (push) Has been cancelled
37 lines
4.3 KiB
Markdown
37 lines
4.3 KiB
Markdown
# 共享工具栏显隐与右键菜单整组接线
|
||
|
||
状态:本次范围已实现,未验证。主线整体仍未完成。
|
||
|
||
## 桌面依据和具体缺口
|
||
|
||
`freecad-source/src/Gui/MainWindow.cpp::createPopupMenu/populateToolBarMenu` 将工具栏 toggleViewAction 放入上下文菜单。`ToolBarManager.cpp` 使用 `User parameter:BaseApp/MainWindow/Toolbars` 下以工具栏名字命名的 Bool 恢复和保存显隐。Web 原有 PersistentToolbarWorkspace 只能排列宿主,没有工具栏组显隐操作和对应原生偏好接线。
|
||
|
||
## 实现范围
|
||
|
||
- 新增 `web/src/toolbar-visibility-menu.tsx`,工具栏停靠区/排列控制区的右键和普通 Toolbars 按钮共享菜单。当前工作台工具栏组显示勾选状态、键盘上下/Home/End、Enter/Space 原生按钮激活、Esc/Tab 关闭及焦点恢复;菜单按视口边界定位、支持滚动和外部点击关闭。
|
||
- `persistent-toolbar-workspace.tsx` 统一连接当前工作台组、可见性恢复及保存。宿主仅通过 hidden 隐藏,不卸载其命令组件;保留菜单入口,可恢复所有隐藏组。保存期间阻止重复切换;失败显示错误且保留先前可见性。布局编辑草稿期间禁用显隐操作,避免通知刷新丢弃草稿。
|
||
- `toolbar-preferences.ts` 使用桌面 `BaseApp/MainWindow/Toolbars` Bool 参数;原生 read/set/export/import 通过现有 requestOwnerParameters,工具栏组显隐无需开发面板。
|
||
- 显隐 FCParam 加入上一轮版本化快照,与 Enabled/User 布局共同持久化、广播和失败回滚。兼容旧 User-only FCParam 和尚无 visibilityParameters 的快照;旧快照不覆盖当前显隐。System 布局预设仍不导出。
|
||
- 显隐独立于 Tux 布局持久化开关:关闭自动恢复排列不应禁止工具栏显示/隐藏偏好。参数编辑器对显隐路径及祖先的修改复用该入口同步。
|
||
|
||
覆盖现有宿主:Workbench、3D display controls,以及 Part 的 Solids/Part Tools/Boolean Tools、Spreadsheet tools。其他工作台尚未注册到该共享宿主的工具栏不因本次修改被宣称已交付。标准 View→Toolbars 菜单和工具栏锁定命令不在本次上下文显隐范围内,仍需主线后续按源码接续。
|
||
|
||
## 复用包
|
||
|
||
1. 上轮根 Enabled 和 User 快照实现:`docs/current/desktop-ui-toolbar-preferences-repair-20260923/README.md`;源码 `toolbar-preferences.ts`。
|
||
2. 既有停靠区、Portal 宿主和布局生命周期:`persistent-toolbar-workspace.tsx`;原布局任务 `operator-gap-tux-workbench-toolbar-placement-persistence`。
|
||
3. 原生参数/存储:`view-navigation-preferences.ts::requestOwnerParameters`、`parameter-storage.ts`、`WebParameterEditor.inc`,无新文档所有者。
|
||
|
||
## 构建、共享写入和接续
|
||
|
||
- 项目目录执行 `python3 tools/build_web_frontend.py`;日志 `docs/current/desktop-ui-toolbar-visibility-20260923/build.log`,退出码 0,built in 1.61s。没有原生源码修改,没有原生构建。
|
||
- 本轮交付时原单一调度器也进入 Part 前端交付;发现既有 helper 没有串行保护。已修改 `tools/build_web_frontend.py`,下一次调用会取得 `web/.freecad-web-frontend-build.lock` 再运行 Vite。锁在 dist 外,子进程继承锁描述符;等待超过 1800 秒退出 124,保存修改后接续,不清理缓存或启动第二调度器。
|
||
- 锁修改在本次前端构建后完成;未为工具脚本修改重跑无变化前端,也未运行任何锁测试或验证。已在锁前启动的进程不受追溯保护,不中断其交付。
|
||
- 未执行测试、烟测、浏览器、截图、独立类型检查或验收。无本轮未结束构建进程。
|
||
- 原调度器第 10784 轮继续 Part 当前文档 New Sketch,未改其 project-shell、Sketcher 或原生目标;本次共享工具栏修改按独立完整范围记录。
|
||
|
||
处理模块 | 对标项 | 源码落点 | 路由入口 | OCCT 边界 | 状态 | 结论
|
||
--- | --- | --- | --- | --- | --- | ---
|
||
共享工具栏/Web | 上下文显隐、偏好保存和键盘反馈 | toolbar-visibility-menu.tsx、persistent-toolbar-workspace.tsx、toolbar-preferences.ts | Toolbars/停靠区右键 → 原生参数接口 | 无几何算法变更 | 已补漏(未验证) | 保留
|
||
共享交付 | 防止多个交付同时写 web/dist | tools/build_web_frontend.py | 原有前端构建 helper | 无原生重建 | 已补漏(未验证) | 保留
|