Capture · Roots: roots drop w_full; hosts give the width

145 component roots drop w_full, the early returns included. Three
field rows keep it, Input, InputGroup and TagInput: stretched without
a width, taffy 0.9 laid the field's flex_1 share at no width in the
template picker at 280px, and the placeholder drew nothing. Container
keeps it, since mx_auto needs a width to fill.

Hosts that relied on a root's width now give it: MessageList boxes
each row at the list's width, the splash gives its bar the column's,
and test stages that mount a component as the window's root sit in a
size_full box. Tests hold a narrow row across the list and the splash
bar across its column; each goes red without its fix.

The gallery gains --narrow <px>, which lays each page in a padded
card at that width and shoots it without its script. The page
header wraps: the title takes the room and the theme switcher drops
below, where a long summary used to push it past the edge. A file
panel step waits for the panel to become key instead of a fixed
pause, which lost a race in a capture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-09-28 13:07:22 -04:00
1 parent 486f618ecc
commit 5779daef82
126 files changed
+275 -276

No files matched your search

+7 -10
View File
@@ -2,7 +2,7 @@ use std::rc::Rc;
use gpui::{
App, ElementId, InteractiveElement, IntoElement, ParentElement, RenderOnce, SharedString,
Styled, Window, div,
Window, div,
};
use super::labels::hue_dot;
@@ -173,14 +173,11 @@ impl RenderOnce for MailboxList {
sections.section(title.clone(), rows)
},
);
div()
.debug_selector(|| "mailbox-list".into())
.w_full()
.child(
sections
.selected(self.open)
.on_select(open.clone())
.on_activate(open),
)
div().debug_selector(|| "mailbox-list".into()).child(
sections
.selected(self.open)
.on_select(open.clone())
.on_activate(open),
)
}
}
-1
View File
@@ -330,7 +330,6 @@ impl RenderOnce for MailComposer {
});
div()
.debug_selector(|| "mail-composer".into())
.w_full()
.flex()
.flex_col()
.gap_3()
-1
View File
@@ -240,7 +240,6 @@ impl RenderOnce for LabelPicker {
let (up, down, chosen) = (finding.clone(), finding.clone(), finding);
div()
.id(self.id.clone())
.w_full()
.flex()
.flex_col()
.gap_2()
-2
View File
@@ -290,7 +290,6 @@ impl RenderOnce for MailList {
if self.mails.is_empty() {
return div()
.debug_selector(|| "mail-none".into())
.w_full()
.px_3()
.py_4()
.text_size(theme.text_size(TextSize::Sm))
@@ -320,7 +319,6 @@ impl RenderOnce for MailList {
let (id, on_select) = (self.id.clone(), self.on_select);
div()
.debug_selector(|| "mail-list".into())
.w_full()
.child(
list.selected(self.selected)
.on_change(move |keys, window, cx| {
-1
View File
@@ -344,7 +344,6 @@ impl RenderOnce for MailReader {
let theme = cx.theme();
div()
.debug_selector(|| "mail-reader".into())
.w_full()
.flex()
.flex_col()
.gap_4()
-1
View File
@@ -124,7 +124,6 @@ impl RenderOnce for SignatureEditor {
let words = input.read(cx).text().to_string();
let theme = cx.theme();
div()
.w_full()
.flex()
.flex_col()
.gap_3()
-1
View File
@@ -199,7 +199,6 @@ impl RenderOnce for MailThreadView {
);
div()
.debug_selector(|| "mail-thread".into())
.w_full()
.flex()
.flex_col()
.gap_3()