docs(app-iced): 扫掉 r5 的五处文档漂移(返工链留下的旧描述)
1. install.rs 模块文档:删掉「钉页脚本轮没做」(6f87c8b 已做:钉死区现在是菜单 + 实例名), 三层滚动的第 3 层改引 `version_menu_height`(VERSION_ROWS 已改),并写明「选项区自己滚」 这层是 M222 之后才有的、`Options` 态不再套外层 scrollable(只有 `Install` 态用)。 2. rows.rs:五个 loader chip → 六枚;「实例名那一格滚一下就到」→ 已钉死;分法描述改成 「面板先保预算 + 列表按整行」(PANEL_BUDGET / whole_rows)。 3. rows/tail.rs 的 TailShare 表:两半各 Fill → 面板先吃预算;补上「带加载器版本列表」这一例外行; 判据注释改成「像素由 window_height 算」(view_sized 已接)。 4. rows/tail.rs 的 M222 分支注释:删「仍欠一项 S1b」(107d619 已修、26ec3f4 已换预算公式), 写清现在 1180×760 = 176px/4 行、900 = 308px/7 行。 5. options/view.rs 控件树示意:改成当前真实顺序(滚动区 = head + chips;钉死区 = 说明/标签 + 菜单 + 实例名),并补上钉死档另走一条路的说明。
This commit is contained in:
1 parent
7ea3dbf8f0
commit
e2e3c39f61
4 files changed
+41
-35
No files matched your search
@@ -14,22 +14,26 @@
|
||||
//! (`rows::TailShare::Shared`)——但只在**面板真的占高度**时(`Options` / `Install`);
|
||||
//! 只画一行提示的 `Hint` 态仍钉死,否则 8 个版本的列表会被砍到 4 行(r1 复审 P2-1)。
|
||||
//!
|
||||
//! ## 已知风险:chips 档最多会同时出现**三层**滚动(r1 复审 P3-2,未验)
|
||||
//! ## 面板的滚动分层(M222 D30 六轮打磨后的实际形态)
|
||||
//!
|
||||
//! ```text
|
||||
//! 版本行列表 scrollable ← 第 1 层(任何档位都在)
|
||||
//! └ 面板 scrollable(chips 档才有) ← 第 2 层
|
||||
//! └ 加载器版本 menu 的 scrollable ← 第 3 层(`options/view.rs` 的 `VERSION_ROWS`)
|
||||
//! 版本行列表 scrollable ← 第 1 层(任何档位都在)
|
||||
//! └ 选项区 scrollable(Shared 档才有) ← 第 2 层(`options/view.rs::section`,只装 head + chips)
|
||||
//! └ 加载器版本 menu 的 scrollable ← 第 3 层(`options/view.rs::version_menu_height`)
|
||||
//! ```
|
||||
//!
|
||||
//! **鼠标落在第 3 层上滚轮会不会冒泡到第 2 层,本仓没有实测通道**(静态图拍不到滚动嵌套)。
|
||||
//! iced 的 `scrollable` 在指针悬停于内层时由内层消费滚动,所以「滚到底之后继续滚会带动外层」
|
||||
//! 属于**未验证行为**;两个方向的坏结果分别是「面板卡住滚不动」与「一滚就跳到外层」。
|
||||
//! **选项区自己滚**这一层是 M222 S7/S1b 之后才有的:`rows::content` 对 `PanelState::Options`
|
||||
//! 不再整块套外层 `scrollable`(只有 `Install` 态还用外层那层)。
|
||||
//!
|
||||
//! 缓解方案(本轮**没做**,理由:不是一处小改)——把「实例名」那一格从面板的滚动区里移出去,
|
||||
//! 做成面板的固定页脚:那要把 `options::section` 拆成「可滚的上半块 + 钉死的下半块」,
|
||||
//! 动 `options/view.rs` / `install.rs` / `rows.rs` 三处,而且改完仍然**无法**验证滚轮冒泡
|
||||
//! (没有通道),只是把风险从「某一格被挡」换成「面板永不挡那一格」。所以先登记为已知风险。
|
||||
//! **鼠标落在内层上滚轮会不会冒泡到外层,本仓仍没有实测通道**(静态图拍不到滚动嵌套)。
|
||||
//! iced 在指针悬停于内层时由内层消费滚动,所以「滚到底之后继续滚会带动外层」属**未验证行为**;
|
||||
//! 两个方向的坏结果分别是「面板卡住滚不动」与「一滚就跳到外层」。
|
||||
//!
|
||||
//! ## 钉死页脚**已经做了**(M222 `6f87c8b` 起)
|
||||
//!
|
||||
//! `options::section` 现在是「可滚的上半块 + 钉死的下半块」:钉死区内是**加载器版本菜单 +
|
||||
//! 实例名输入框**(D30 四审:菜单也钉住,否则它正好落在裁切线上)。所以「实例名被滚走」
|
||||
//! 这个风险已经消除,只剩上面那条滚轮冒泡未验。
|
||||
//!
|
||||
//! ## 只有意图,没有乐观回显
|
||||
//!
|
||||
|
||||
@@ -3,18 +3,21 @@
|
||||
//! ## 版面(424 正文列里的四段)
|
||||
//!
|
||||
//! ```text
|
||||
//! 1.21.9 [安装]
|
||||
//! 安装选项
|
||||
//! ── 滚动区(Shared 档)────────────────────────────
|
||||
//! 1.12.2 [安装]
|
||||
//! [原版][Forge][NeoForge][Fabric][Quilt][LiteLoader] ← 六枚一行
|
||||
//! LiteLoader 只叠在原版上 —— 要叠 Forge 请运行:… ← 中性说明(只有 LiteLoader 有)
|
||||
//! 加载器版本 ← 只在选了加载器时出现
|
||||
//! ┌ 0.16.5 ┐ ← 官方那份列表(menu + 滚动,最多看两行项)
|
||||
//! │ 0.16.4 │
|
||||
//! ── 钉死区 ──────────────────────────────────────
|
||||
//! Vanilla parent only — Forge goes through the CLI ← 说明行;没有说明时是「加载器版本」标签
|
||||
//! ┌ 1.12.2-SNAPSHOT ┐ ← 官方那份列表(menu + 滚动,按条目数占高:1 条 64 / 2 条 112)
|
||||
//! └───────────────────┘
|
||||
//! [实例名 ]
|
||||
//! NeoForge 需要 Minecraft 1.20.1 或更新 ← 不兼容时(Error 色)
|
||||
//! ```
|
||||
//!
|
||||
//! - **钉死档**(原版等不带版本列表的面板)走另一条路:标签、说明、菜单、实例名都在同一列里
|
||||
//! 顺序铺开(`04` 基线图就是这一档,不能改);
|
||||
//! - 不兼容时的原因行(Error 色)在滚动区末尾;
|
||||
//! - 说明只有 LiteLoader 有(`Key::DownloadOptionsLiteLoaderVanillaOnly`)。
|
||||
//!
|
||||
//! ## 为什么加载器是**六枚一行**(M222 D30 r1 实测订正)
|
||||
//!
|
||||
//! 这里原先写「五家一起排会溢出 ⇒ 折成两行」,那是 M105 的推算。D30 的实测图(1180×760,
|
||||
|
||||
@@ -25,12 +25,14 @@
|
||||
//! 可视高(行高 44),版本号一个字都读不出来,用户想换版本点不到。
|
||||
//!
|
||||
//! 病根是 chips 档比三栏档多花两行 chip(tabs 48 + chips 48 + 两处间距),而选项区那一块
|
||||
//! 固定 ≈316px(版本行 40 + 标题 16 + 五个 loader chip 34 + 标题 16 + 菜单 112 + 实例名 56)。
|
||||
//! 固定 ≈316px(版本行 40 + **六枚** loader chip 34 + 菜单 + 实例名 56;M222 之后菜单与实例名
|
||||
//! 都在面板钉死区,见 `options/view.rs::section`)。
|
||||
//! 同样的 760 高窗口里:三栏档列表还剩 158px(3 整行),chips 档只剩 18px。
|
||||
//!
|
||||
//! 修法是 [`TailShare`] 两档:三栏档照旧钉死(面板整块在屏内),chips 档**且面板真的占高度**
|
||||
//! (选项区展开 / 安装中)时改成两半各 `Fill`——列表拿到 ≈182px(**4 整行**),面板拿到同样一半、
|
||||
//! **自己可滚**(顶端那个实心「安装」按钮与五个 loader chip 仍在屏内,实例名那一格滚一下就到)。
|
||||
//! (选项区展开 / 安装中)时改成「**面板先保预算、剩下按整行给列表**」
|
||||
//! (`tail::whole_rows` + `PANEL_BUDGET = 300`):1180×760 下列表 **176px = 4 整行**,
|
||||
//! 面板拿走其余(≈307px)。实例名那格**已经钉死**在面板底部、不需要滚(M222 `6f87c8b`)。
|
||||
//! 「刚进页面还没选版本」(`Hint`,面板只有一行提示)**不共享**:那一态 main 本来就有
|
||||
//! **7 整行**在屏(不是 8:第 8 条墨迹其实是 `Pick a version, then install` 那句 hint,
|
||||
//! 横向范围对不上版本号;700×760 上放 8 行要 352px,实测只剩 309~322px),五五分会砍成
|
||||
|
||||
@@ -13,18 +13,18 @@ use crate::pages::download::install::PanelState;
|
||||
///
|
||||
/// | 档 | 分法 | 为什么 |
|
||||
/// |---|---|---|
|
||||
/// | `Wide` / `Narrow` / `Compact` | [`TailShare::Pinned`]:面板按内容高钉在底部,列表吃剩下的 | 竖栏档在 760 高的窗口里列表还剩 158px(3 整行),面板整块在屏内——两样都对 |
|
||||
/// | `Chips` + 面板**占高度**(选项区展开 / 安装中) | [`TailShare::Shared`]:两半各 `Fill`,面板自己可滚 | chips 档比三栏档多花两行 chip(tabs 48 + chips 48 + 间距),列表只剩 **18px**(M123 实测 0.4 行),面板 316px 全在屏内也没用——版本号读不出来就换不了版本 |
|
||||
/// | `Wide` / `Narrow` / `Compact` + 面板**不带**加载器版本列表 | [`TailShare::Pinned`]:面板按内容高钉在底部,列表吃剩下的 | 原版面板矮(`04` 实测列表 6 行),整块在屏内 |
|
||||
/// | 任何档 + 选项区**带加载器版本列表** | [`TailShare::Shared`]:面板先吃 [`PANEL_BUDGET`],剩下按整行给列表([`whole_rows`]) | 带版本列表的选项区实高 ≈307px,对半分(旧规则)把列表压到 110px;现在 1180×760 是 **176px = 4 整行** |
|
||||
/// | `Chips` + 面板**占高度**(选项区展开 / 安装中) | [`TailShare::Shared`] | chips 档比三栏档多花两行 chip,列表只剩 **18px**(M123 实测 0.4 行)——版本号读不出来就换不了版本 |
|
||||
/// | 任何档 + 只画 `Hint`(没选版本,面板只有一行) | [`TailShare::Pinned`] | 一行提示不值得对半分:700×760 下 main 是 **7 整行**在屏(不是 8——第 8 条墨迹其实是 `Pick a version, then install` 那句 hint,横向范围对不上版本号;要放 8 行得 352px,实测只剩 309~322px),对半分只剩 **4 整行**、下面留 160px 空白(r1 复审 P2-1,r2 修回 7) |
|
||||
///
|
||||
/// 判据是**档位**不是高度:页面的模型里只有 `window_width`(`pages/model.rs`),窗口高度
|
||||
/// 没有接进页面(要接得改 `pages/mod.rs` 的入口签名,超出本页的边界)。所以这里按「哪一档
|
||||
/// 的竖排 chrome 会把列表压没」来分,并在报告里登记这条判据的边界。
|
||||
/// 分高方式按「档位 + 面板形态」判;**具体像素**由窗口高度算(`pages/download.rs::view_sized`
|
||||
/// 把 `model.window_height` 经 `frame::body_height` 传下来,见 [`whole_rows`])。
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub(crate) enum TailShare {
|
||||
/// 面板钉在底部(三栏档)。
|
||||
Pinned,
|
||||
/// 面板与列表各吃一半(chips 档)。
|
||||
/// 面板先吃预算、列表按整行吃剩下的(带版本列表的选项区 / chips 档占高度时)。
|
||||
Shared,
|
||||
}
|
||||
|
||||
@@ -44,14 +44,11 @@ impl TailShare {
|
||||
(VersionRailTier::Chips, PanelState::Options(_) | PanelState::Install(_)) => {
|
||||
Self::Shared
|
||||
}
|
||||
// M222 D30 r1 S1 / r2 S7:**带加载器版本列表**的选项区在任何档位都太高。
|
||||
// 三栏档(1180×760)实测:修前面板 204→372px,版本列表 6.0 行(278px)被压到
|
||||
// 2.4 行(110px,底缘切在第三行图标上);改成 Shared 之后版本列表 **245px = 5.29 行**、
|
||||
// 面板 237px(分隔线 y=498)。面板因此变矮,实例名会被挤出首屏 ⇒ 同一轮把它
|
||||
// **钉成面板页脚**(`install::panel_with` 的 `shared` 分支 + `options::section`)。
|
||||
// 仍欠一项:245px 不是行高整数倍,列表底缘仍切在第 6 行中间(S1b/S9)。
|
||||
// 修它要把「分给列表的高度」从 `pages/download.rs` 传进来做 floor 取整
|
||||
// (`responsive` 在 Fill 子项上拿不到确定高度,实测无效,已回退)。
|
||||
// M222 D30 r1/r2:**带加载器版本列表**的选项区在任何档位都太高。三栏档修前
|
||||
// 面板 204→372px,版本列表被压到 2.4 行(110px)且底缘切在第三行图标上。
|
||||
// 现在走 Shared:面板先吃 `PANEL_BUDGET`,列表按**整行**取(`whole_rows`,
|
||||
// 标定 44/97)⇒ 1180×760 列表 **176px = 4 整行**、面板 ≈307px;
|
||||
// 900 档 308px = 7 整行。实例名与版本菜单都在面板钉死区(`options::section`)。
|
||||
(_, PanelState::Options(options)) if options.has_loader_versions() => Self::Shared,
|
||||
_ => Self::Pinned,
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user