23 lines
1.5 KiB
Rust
23 lines
1.5 KiB
Rust
//! 发布页面标签的数据结构。保留稳定页面身份、标题、选中状态和开发工具类别;页面的托管所有权由模型层管理。
|
|
//!
|
|
//! Immutable page registry projections. Host navigation is rendered in sidebar.
|
|
//! IDs are local to each window presentation and never own managed VM objects.
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
/// 托管页面注册表的不可变投影,原生工具只使用稳定 ID 与显示元数据。
|
|
// ui_bridge::project_tabs 从当前窗口页面注册表生成;sidebar 画标签,scene 用 developer_tool 标记选择宿主管理页。
|
|
pub struct Tab {
|
|
// 当前窗口展示内稳定的 ID,不保证跨窗口唯一;输入还需携带窗口、session 和 layout_version。
|
|
// project_tabs 按 Page 弱身份复用 ID;移出窗口后映射删除,再加入时可获得新 ID,不能当作 VM 地址。
|
|
pub id: u64,
|
|
// 本次发布的标题文本副本,原生界面显示时无需读取 VM。
|
|
pub title: String,
|
|
// 该标签是否是此窗口当前活动页;页面注册表顺序与选中状态分别表示。
|
|
// 投影可反映待提交切页请求,不能仅凭这一字段推断新页面布局已经发布成功。
|
|
pub active: bool,
|
|
// 开发工具页的类别标识;普通页省略此字段,反序列化缺失字段时默认为 None。
|
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
pub developer_tool: Option<String>,
|
|
}
|