3.2 KiB
3.2 KiB
05 · 标签、窗口、默认页与开发工具
三层身份
| 层次 | 负责什么 | 不负责什么 |
|---|---|---|
| 托管 Page / ManagedWindow | 页面内容、打开/关闭、所属窗口、脚本覆盖行为和对象可达性 | 像素级 hover、原生按钮位置 |
| 已发布 Tab / Frame / Window Envelope | 传输不透明 ID、标题、活动状态、窗口命令和版本 | 保留 VM 堆对象 |
| TesseraApp / tabs::Motion / winit Window | 绘制、命中、拖动、滚动、原生资源及即时交互 | 执行业务回调、复制业务对象图 |
该图是可达性与展示状态的说明,不是一个源码 enum。关闭原生窗口、移除 Page 展示和回收对象不是同一动作。跨窗口拖放携带来源/目标窗口、布局版本、插入位置等元数据,worker 拒绝过期目标,再更新托管 registry;GUI 不直接移动堆对象。可编辑来源:windows.puml。
已完成的标签行为
- 启动有一个默认 Page;
+、Cmd/Ctrl+T 新建,Cmd/Ctrl+W 关闭活动页。 - 顶部与左侧宿主区域共用背景;内容区单独作为页面表面,未实现用户暂不需要的左右页面分栏。
- 40 逻辑像素栏高、32 像素标签、88–208 像素宽度;保留高密度和鼠标/触控板滚动,移除两侧点击箭头。
- 非活动标签之间有短竖线,活动/hover 邻边按状态隐藏或渐变。
- 新建/关闭/自动揭示使用独立几何动画;hover 背景、关闭按钮和分隔线使用 160ms 颜色过渡,点击选中即时生效。
- macOS 原生红黄绿保留系统行为,并与标签中心线对齐;工具栏空白处可拖动和双击放大/还原。
native_chrome.rs 通过 AppKit 操作现有窗口与系统按钮。双击使用 NSEvent.clickCount 和 NSWindow.performZoom,而不是画一个假的最大化动画。读取系统偏好:最小化/禁用遵循分支;Fill 目前映射到公开 zoom API,没有调用 Chrome 使用的私有 _zoomFill,不保证复刻所有新系统平铺边距。
默认页与四个工具页
默认页源码是 start_page.endor,位于独立私有模块;创建页、共享计数和组合示例都是真实 Endor 对象操作。它不覆盖用户程序 globals,也没有把四个工具页当作默认内容。
Console、Sources、Network、Settings 各自有独立页面实现和窗口内交互状态。目前通过 ui.developerTools("Console") 等入口与现有快捷键进入,工具发现菜单仍延后。四页不是新平台业务模块,也不代表已经接入云服务。
- Console:真实 VM 输入、输出和本机请求活动;不是只显示介绍的文本区域。
- Sources:当前源码/Console transcript、AST 与选择;云文件 provider 默认未连接。
- Network:仅本 Tessera API 请求的有界记录,不是浏览器或操作系统抓包。
- Settings:内存内主题强调色;没有跨进程持久化。
源码位置:shell/developer_tools/。宿主管理控件在 shell/system_ui/,和 guest 的 Button/Block 类型有明确区别。
