跨端: 转发入口移到头部动作行、右下只留回复球(我多摆了一个球)

承接上一条。用户之前说「还有其他行为都要一一对齐,例如邮件展示页面」,
我当时补了头部的「标记已读 / 对话树」,却把**转发**做成了右下角的第二个球。

照 WebUI 核对(`MailView.tsx:520-544` 与 `:994`):
  · 头部动作行是**三个**:标记已读 → 对话树 → **转发**
    (`ForwardIcon` + 文字,`text-gray-500` = 导航样式)
  · 右下角只有**一个**球:`reply-fab`,点开才是回复框。**转发从来不是球。**

多出来那个球是我自己发明的,两个问题:
  ① 它没有任何对应物,纯属"看着缺就补一个";
  ② 转发在 WebUI 是**导航**(灰、与对话树并列),球是**主操作**
     (蓝、抢注意力)—— 把导航做成主操作,页面里就有了两个同等重量的动作,
     看不出主次。

改动:头部动作行补上「转发」(顺序与样式逐项对齐 WebUI),删掉右下角那个球。
设备已验:头部一行是「对话树 · 转发」(同 y),右下只剩一个蓝色回复球。

`files=33 checks=530 pass=530 fail=0`,`mutants=52 ran=52 skipped=0`,`baseline=7/7✓`。
This commit is contained in:
2026-09-21 02:34:44 +08:00
parent 6f1b4352cd
commit 139fa19f90

View File

@ -807,6 +807,26 @@ export struct MailDetailView {
Text('对话树').fontSize(12).fontColor(Theme.textMuted)
}
.onClick(() => { this.openThread(); })
/*
* ★★ 2026-09-20 补:**转发在这里**,不在右下角的球上。
*
* WebUI `MailView.tsx:534-541` 的头部动作行是三个:
* 标记已读 → 对话树 → **转发**(`ForwardIcon` + 文字,灰=导航)
* 而右下角只有一个球(`reply-fab`,`MailView.tsx:994`),
* 点开才是回复框。**转发从来不是球**。
*
* 我原来在右下角摆了两个球(转发 + 回复),那是自己发明的:
* · 多出来那个球没有任何对应物,纯属"看着缺就补一个";
* · 转发在 WebUI 是"**导航**"(灰、跟对话树并列),
* 球是"**主操作**"(蓝、抢注意力)—— 把导航做成主操作,
* 页面里就有了两个同等重量的动作,看不出主次。
* 现在与 WebUI 同构:头部一个转发入口,右下只剩回复球。
*/
Row({ space: 4 }) {
AmIcon({ iconName: 'forward', iconSize: 14, iconColor: Theme.textMuted })
Text('转发').fontSize(12).fontColor(Theme.textMuted)
}
.onClick(() => { this.showReplyBox = false; this.showForwardBox = true; })
}
.width('100%')
.margin({ bottom: 6 })
@ -1038,21 +1058,6 @@ export struct MailDetailView {
* 会让人分不出哪个更主要。
*/
Row({ space: 12 }) {
Button() {
AmIcon({ iconName: 'forward', iconSize: 20, iconColor: Theme.accentFor() })
}
.width(48).height(48)
.borderRadius(24)
.backgroundColor(Theme.surfaceMuted)
.onClick(() => {
/*
* 打开转发框时把回复框关掉:两者都是底部弹层,
* 同时开着会叠在一起(WebUI 也用同一份 `forwarding` 状态互斥)。
*/
this.showReplyBox = false;
this.showForwardBox = true;
})
Button() {
AmIcon({ iconName: 'chatBubble', iconSize: 24, iconColor: Theme.accentFg })
}
@ -1062,7 +1067,7 @@ export struct MailDetailView {
.onClick(() => { this.showForwardBox = false; this.showReplyBox = true; })
}
.alignItems(VerticalAlign.Bottom)
/* 让出底部悬浮条;右边距与原来的回复球一致(球没变位置,只是多了左边一个) */
/* 让出底部悬浮条(右下只剩这一个回复球,与 WebUI `reply-fab` 同位) */
.margin({ right: 16, bottom: this.navReserve + 16 })
}
.width('100%').layoutWeight(1)