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.
This commit is contained in:
ZacharyZhang-NY committed 2026-09-28 13:07:22 -04:00
1 parent 3be809a660
commit 81e73b79c1
126 files changed
+275 -276

No files matched your search

-1
View File
@@ -428,7 +428,6 @@ impl RenderOnce for ImageAnnotator {
})
});
div()
.w_full()
.flex()
.flex_col()
.gap_3()
-2
View File
@@ -145,7 +145,6 @@ impl RenderOnce for AudioWaveform {
.id(self.id.clone())
.debug_selector(|| "audio-waveform".into())
.relative()
.w_full()
.h(sizes.waveform)
.border_1()
.border_color(transparent_black())
@@ -226,7 +225,6 @@ impl RenderOnce for AudioSpectrum {
let (color, round) = (theme.colors.fg_muted, theme.radius(Radius::Sm));
div()
.debug_selector(|| "audio-spectrum".into())
.w_full()
.h(theme.media().waveform)
.flex()
.items_end()
-1
View File
@@ -92,7 +92,6 @@ impl RenderOnce for VolumeControl {
None => slider,
};
div()
.w_full()
.flex()
.items_center()
.gap_2()
-1
View File
@@ -200,7 +200,6 @@ impl RenderOnce for ImageCropper {
div()
.id(self.id.clone())
.relative()
.w_full()
.p(side / 2.0)
.border_1()
.border_color(transparent_black())
-1
View File
@@ -251,7 +251,6 @@ impl RenderOnce for AudioPlayer {
};
let left = format!("-{}", clock(self.length - self.at));
div()
.w_full()
.flex()
.flex_col()
.gap_3()
-1
View File
@@ -255,7 +255,6 @@ impl RenderOnce for MicLevelMeter {
let (unlit, round) = (colors.border, theme.radius(Radius::Sm));
div()
.debug_selector(|| "mic-level".into())
.w_full()
.h(theme.meter_track())
.flex()
.gap_0p5()
-1
View File
@@ -264,7 +264,6 @@ impl RenderOnce for Scrubber {
div()
.id(self.id.clone())
.debug_selector(|| "scrubber".into())
.w_full()
.px(thumb / 2.0)
.rounded(theme.radius(Radius::Sm))
.border_1()
-1
View File
@@ -251,7 +251,6 @@ impl RenderOnce for VideoThumbnailStrip {
let (pressed_strip, moved_strip) = (strip.clone(), strip.clone());
div()
.id(self.id.clone())
.w_full()
.px(handle / 2.0)
.border_1()
.border_color(transparent_black())
-1
View File
@@ -309,7 +309,6 @@ impl RenderOnce for SubtitleEditor {
})
});
div()
.w_full()
.flex()
.flex_col()
.gap_1()
-1
View File
@@ -81,7 +81,6 @@ impl RenderOnce for ImageThumbnail {
.children(label);
div()
.id(self.id)
.w_full()
.rounded(outer)
.border_1()
.border_color(if self.selected {
-1
View File
@@ -189,7 +189,6 @@ impl RenderOnce for ImageUpload {
.into_any_element(),
};
div()
.w_full()
.flex()
.flex_col()
.gap_3()