refactor(app-iced): M68 —— 把 nav 轨宽收敛成一个 M69 迁移点(三处调用 → 一行改动)
M69(141e9b1)把 LayoutMetrics::nav_expanded_width 改名 nav_rail_width、删掉
nav_collapsed_width、新增 nav_drawer_width=240。本分支基线 0aac307 还没有 M69 的
crates/design(那个目录也不在本 mission 的改动范围),现在直接改名会编不过。
所以把 shell/nav.rs 的三处 metrics.nav_expanded_width 收敛到 nav_rail_width(metrics),
并在函数文档里写清 M69 前后对照与「合入后只改函数体一行」;theme::STROKE_PX 同样
注明可换成 unlucky_design::stroke::HAIRLINE。行为/视觉零变化(值都是 88 / 1.0)。
This commit is contained in:
1 parent
df4ff373b7
commit
14da7b3dec
2 files changed
+27
-5
No files matched your search
@@ -4,7 +4,7 @@
|
|||||||
//!
|
//!
|
||||||
//! | 项 | 参考值 | 令牌落点 |
|
//! | 项 | 参考值 | 令牌落点 |
|
||||||
//! |---|---|---|
|
//! |---|---|---|
|
||||||
//! | 轨宽 | 5.1 官方 96(narrow 80);本项目 **88** | `LayoutMetrics::DESKTOP.nav_expanded_width` |
|
//! | 轨宽 | 5.1 官方 96(narrow 80);本项目 **88** | [`nav_rail_width`](`LayoutMetrics` 骨架值,详见该函数文档的 M69 迁移说明) |
|
||||||
//! | 轨容器 | 5.3 形状 None / L0 / `Surface` | `MaterialLayer::Canvas` |
|
//! | 轨容器 | 5.3 形状 None / L0 / `Surface` | `MaterialLayer::Canvas` |
|
||||||
//! | 选中指示器 | 5.4 **56×32**、圆角 full、`SecondaryContainer` | [`indicator_size`](令牌推导) |
|
//! | 选中指示器 | 5.4 **56×32**、圆角 full、`SecondaryContainer` | [`indicator_size`](令牌推导) |
|
||||||
//! | 图标 | 5.5 24px | `IconSize::Toolbar` |
|
//! | 图标 | 5.5 24px | `IconSize::Toolbar` |
|
||||||
@@ -88,7 +88,7 @@ pub(super) fn rail<'a>(ui: &'a Ui, selected: NavItem) -> Element<'a, Message> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
container(column(items).spacing(metrics.nav_item_gap))
|
container(column(items).spacing(metrics.nav_item_gap))
|
||||||
.width(metrics.nav_expanded_width)
|
.width(nav_rail_width(metrics))
|
||||||
.height(Length::Fill)
|
.height(Length::Fill)
|
||||||
.style(|_theme| filled(ui.layer(MaterialLayer::Canvas)))
|
.style(|_theme| filled(ui.layer(MaterialLayer::Canvas)))
|
||||||
.into()
|
.into()
|
||||||
@@ -138,7 +138,7 @@ fn rail_item<'a>(
|
|||||||
.height(item_height);
|
.height(item_height);
|
||||||
|
|
||||||
button(stack)
|
button(stack)
|
||||||
.width(ui.metrics().nav_expanded_width)
|
.width(nav_rail_width(ui.metrics()))
|
||||||
.height(item_height)
|
.height(item_height)
|
||||||
.padding(0)
|
.padding(0)
|
||||||
.style(move |_theme: &IcedTheme, status| {
|
.style(move |_theme: &IcedTheme, status| {
|
||||||
@@ -168,13 +168,30 @@ fn rail_item<'a>(
|
|||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 导航轨宽度(**M69 迁移点**)。
|
||||||
|
///
|
||||||
|
/// M69(`141e9b1`)把 `LayoutMetrics` 的 nav 字段做了语义纠正:
|
||||||
|
///
|
||||||
|
/// | 旧 | 新 |
|
||||||
|
/// |---|---|
|
||||||
|
/// | `nav_expanded_width = 88` | **`nav_rail_width = 88`**(值不变,只是名字从「展开」改成「轨」) |
|
||||||
|
/// | `nav_collapsed_width = 48` | 删除(48 连 56 宽的选中指示器都放不下) |
|
||||||
|
/// | —(缺) | 新增 `nav_drawer_width = 240`(D33 的展开态抽屉) |
|
||||||
|
///
|
||||||
|
/// 本 crate 的分支基线(`0aac307`)还没有 M69,所以这里只能写旧字段名;**等 M69 合入后
|
||||||
|
/// 把函数体那一行改成 `metrics.nav_rail_width` 即可,其余代码与视觉零变化**。
|
||||||
|
/// 把三处调用点收敛到这个函数,就是为了让迁移永远只有一行。
|
||||||
|
fn nav_rail_width(metrics: LayoutMetrics) -> f32 {
|
||||||
|
metrics.nav_expanded_width
|
||||||
|
}
|
||||||
|
|
||||||
/// 选中指示器尺寸(12b 5.4 参考 56×32),全部由令牌推导、不写死:
|
/// 选中指示器尺寸(12b 5.4 参考 56×32),全部由令牌推导、不写死:
|
||||||
///
|
///
|
||||||
/// - 宽 = `nav_expanded_width − 2 × Space::X4` = 88 − 32 = **56**(轨的左右内边距 16)
|
/// - 宽 = [`nav_rail_width`] − 2 × `Space::X4` = 88 − 32 = **56**(轨的左右内边距 16)
|
||||||
/// - 高 = `control_height − Space::X2` = 40 − 8 = **32**(可见高度上下各让 4)
|
/// - 高 = `control_height − Space::X2` = 40 − 8 = **32**(可见高度上下各让 4)
|
||||||
pub fn indicator_size(metrics: LayoutMetrics) -> (f32, f32) {
|
pub fn indicator_size(metrics: LayoutMetrics) -> (f32, f32) {
|
||||||
(
|
(
|
||||||
metrics.nav_expanded_width - Space::X4.dp() * 2.0,
|
nav_rail_width(metrics) - Space::X4.dp() * 2.0,
|
||||||
metrics.control_height - Space::X2.dp(),
|
metrics.control_height - Space::X2.dp(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,11 @@ use unlucky_design::spacing::{LayoutMetrics, Space};
|
|||||||
use unlucky_design::typography::{FontFamily, Platform, TypeRole, TypeStyle, Weight};
|
use unlucky_design::typography::{FontFamily, Platform, TypeRole, TypeStyle, Weight};
|
||||||
|
|
||||||
/// 全站描边宽度(逻辑 px @100% DPI)。rubric G7 要求全站 1px —— 只许这一处定义。
|
/// 全站描边宽度(逻辑 px @100% DPI)。rubric G7 要求全站 1px —— 只许这一处定义。
|
||||||
|
///
|
||||||
|
/// **M69 迁移点**:M69(`141e9b1`)起令牌层有「一像素线单一真源」
|
||||||
|
/// `unlucky_design::stroke::HAIRLINE = 1.0`(容器描边/分隔线/聚焦环都用它)。
|
||||||
|
/// 本 crate 的分支基线(`0aac307`)还没有这个模块;M69 合入后把这个常量换成
|
||||||
|
/// `pub use unlucky_design::stroke::HAIRLINE as STROKE_PX;` 即可(数值与被引用的地方都不动)。
|
||||||
pub const STROKE_PX: f32 = 1.0;
|
pub const STROKE_PX: f32 = 1.0;
|
||||||
|
|
||||||
/// 已经解析到系统的字体族名(`&'static str` 才能塞进 `iced::Font`)。
|
/// 已经解析到系统的字体族名(`&'static str` 才能塞进 `iced::Font`)。
|
||||||
|
|||||||
Reference in new issue
Block a user