Port · Parity: dark shots judged; the status shot waits out the tooltip; comments one short line

This commit is contained in:
ZacharyZhang-NY committed 2026-09-29 18:18:05 -04:00
1 parent d7272e88bd
commit 007ed30d4a
16 files changed
+18 -18

No files matched your search

+1 -1
View File
@@ -137,7 +137,7 @@ Ely GPUI Component. A component library for GPUI, in light and dark.
- Paths with `/` between folders become a tree through `lists::Folder::of`, for `FileTree` and `files::ArchiveViewer` alike.
- A folder's path over its entries is `lists::path_bar`, and its first order is `lists::listed`, folders first by name: DirectoryListing and FileExplorer share both, so every view shows one path and one order.
- A file's icon comes from `primitives::file_icon`, one map from name to icon for every chapter, under the owner's `primitives::IconTheme`, whose rules by name and extension come first; `files::FileIcon` draws it. What fits across a width comes from `layout::columns_for`, and `layout::fit` adds the inset that centers it.
- Badges, tags and avatars live in `data_display`; forms and shell draw theirs from there, and `data_display` imports neither. A hue worn in a row, a label's or an event's, is `data_display::color_mark`, and `Palette::hue` gives the chart color by index. Avatars take square pictures. A tag is never wider than its container; a long label ends in an ellipsis beside its remove mark.
- Badges, tags and avatars live in `data_display`; forms and shell draw theirs from there, and `data_display` imports neither. A hue worn in a row, a label's or an event's, is `data_display::color_mark`, and `Palette::hue` gives the chart color by index. A tag is never wider than its container; a long label ends in an ellipsis beside its remove mark.
- A picture drawn in code reaches gpui as a `RenderImage`. A host that replaces one frees the old through `App::drop_image`, or every frame stays in the sprite atlas (the gallery's model).
- `img()` keeps loading state, and moves an animated picture's frames, only with an id; the frames hold still while its window is inactive or gpui's own `reduce_motion` is on, which the theme's reduced motion does not set. Content masks are rectangles, but `img()` draws only the part of its picture inside its box and rounds that part with its own radius, so a `Cover` crop keeps its corners.
- gpui reads a `&str` picture source with a scheme as a web address, and any other as an embedded asset. A file goes through `Path` (`documents::source` in the crate, `Path::new` in the gallery).
+1 -1
View File
@@ -36,7 +36,7 @@ const SCRIPT: &[Step] = &[
Step::Wait(300),
Step::DownAt("status", 249.0, 11.0),
Step::UpAt("status", 249.0, 11.0),
Step::Wait(300),
Step::Wait(900),
Step::Shot("status"),
Step::Rest,
];
+3 -3
View File
@@ -54,7 +54,7 @@ pub enum Step {
}
const FRAME: Duration = Duration::from_millis(120);
/// How long a shot waits for each frame of the window it shoots.
/// How long a shot waits for each frame.
const SHOWN: Duration = Duration::from_secs(5);
/// How long an out-of-process file panel may take to open.
const PANEL: Duration = Duration::from_secs(10);
@@ -151,7 +151,7 @@ pub async fn play(
last.x + (goal.x - last.x) * t,
last.y + (goal.y - last.y) * t,
);
// Each move twice, as gpui 0.2.2 replayed a held drag; gpui_macos replays only under a real button.
// Each move twice: gpui_macos replays no posted drag.
for _ in 0..2 {
send(window, Mouse::Drag, at, cx)?;
cx.background_executor()
@@ -255,7 +255,7 @@ pub async fn play(
Ok(())
}
/// Waits three frames: the first draws what the steps left, and AppKit shows it by the third, since gpui presents without waiting on the GPU.
/// Waits three frames, until AppKit shows what the steps left.
pub async fn shown(window: gpui::AnyWindowHandle, cx: &mut AsyncApp) -> Result<()> {
for _ in 0..3 {
let (drawn, frame) = futures::channel::oneshot::channel();
+1 -1
View File
@@ -86,7 +86,7 @@ impl Avatar {
}
}
/// A square picture: gpui clips pictures to rectangles, so a cropped one keeps square corners.
/// A picture, cropped to fill the avatar.
pub fn image(mut self, source: impl Into<ImageSource>) -> Self {
self.image = Some(source.into());
self
+1 -1
View File
@@ -177,7 +177,7 @@ fn units_rest_on_the_bottom_of_a_statistics_number(cx: &mut TestAppContext) {
}
}
/// A lone digit in extra-small text, whose line is no whole number of device pixels.
/// A lone digit whose line is no whole device pixel.
struct Nine;
impl Render for Nine {
+1 -1
View File
@@ -148,7 +148,7 @@ fn every_chart_fills_a_column_its_block_measures_by_content(cx: &mut TestAppCont
);
}
/// A converter in a 460px box beside a card 260 wide, in a 280px row.
/// A converter squeezed beside a card in a 280px row.
struct Squeezed;
impl Render for Squeezed {
+1 -1
View File
@@ -125,7 +125,7 @@ impl RenderOnce for Input {
.flex_1()
.min_w_0()
.child(self.state)
// An empty strut keeps the frame's inset to type in; squeezed, it spills unseen.
// An empty strut keeps the frame's inset to type in.
.child(div().px(theme.control_padding(self.size)).border_x_1()),
)
.when(self.clearable && !empty && !disabled, |frame| {
+1 -1
View File
@@ -28,7 +28,7 @@ fn angle_at(bounds: Bounds<Pixels>, at: Point<Pixels>, snap: bool) -> f32 {
type OnTurn = Rc<dyn Fn(f32, &mut Window, &mut App)>;
/// An svg turned to its angle, in degrees clockwise from straight up, inside a ring with a knob at that angle. A drag on the knob turns it, Shift snapping to 15°; with focus, Left and Right turn it by 15°. gpui turns svgs alone, so the picture is an svg path.
/// An svg turned clockwise by degrees, with a knob to drag.
#[derive(IntoElement)]
pub struct Rotatable {
id: ElementId,
+1 -1
View File
@@ -68,7 +68,7 @@ fn opened(cx: &mut TestAppContext, reduced: bool) -> &mut VisualTestContext {
cx
}
/// Presses on the grab and drags it down by `dy`, past gpui's drag threshold.
/// Presses the grab and drags it down by `dy`.
fn pull(cx: &mut VisualTestContext, dy: f32) -> Point<Pixels> {
let rest = body(cx).origin;
let grab = point(rest.x + px(10.0), rest.y - px(28.0));
+1 -1
View File
@@ -403,7 +403,7 @@ fn effects_keep_their_content_and_let_presses_through(cx: &mut TestAppContext) {
assert_eq!(view.read_with(cx, |effects, _| effects.presses), 1);
}
/// Rows rising in, in a sized box down a column that fills a row.
/// Rows rising in a sized box.
struct Rising;
impl Render for Rising {
+1 -1
View File
@@ -63,7 +63,7 @@ pub(super) fn arrive<E: Styled>(element: E, entrance: Entrance, t: f32) -> E {
let t = ease_out_cubic(t);
match entrance {
Entrance::Fade => element.opacity(t),
// Padding, as taffy's size cache drops a margin that collapses through a block.
// Padding: taffy's size cache drops a collapsed margin.
Entrance::Rise => element.opacity(t).pt(NUDGE * 2.0 * (1.0 - t)),
Entrance::Slide => element.opacity(t).ml(NUDGE * -4.0 * (1.0 - t)),
}
+1 -1
View File
@@ -383,7 +383,7 @@ impl Palette {
)
}),
);
// Padding grows the box a scrim centers, as a margin taffy kept would.
// Padding grows the box the scrim centers.
div().child(card).with_animation(
(self.id, "in"),
Animation::new(motion::duration(motion::BASE, cx)).with_easing(motion::ease_out_cubic),
+1 -1
View File
@@ -237,7 +237,7 @@ impl RenderOnce for Dialog {
})
.into_any_element()
} else {
// Padding grows the box the scrim centers, as a margin taffy kept would.
// Padding grows the box the scrim centers.
div()
.child(card)
.with_animation((self.id.clone(), "in"), arrive, |card, t| {
+1 -1
View File
@@ -433,7 +433,7 @@ fn a_popover_opened_by_its_owner_takes_no_icon() {
let _ = Popover::with_opener("own", |_| div(), |_, _, _| div()).icon(IconName::Clock);
}
/// A dialog open from the first frame, with a body the test can find.
/// A dialog open from the first frame.
struct Rising;
impl Render for Rising {
+1 -1
View File
@@ -33,7 +33,7 @@ pub(crate) fn framed(ratio: f32, cx: &App) -> Div {
frame
}
/// Themed `img()` that fills the box it is given; a `Cover` crop keeps its rounded corners.
/// Themed `img()` that fills the box it is given.
#[derive(IntoElement)]
pub struct Image {
id: ElementId,
+1 -1
View File
@@ -16,7 +16,7 @@ fn nested() -> bool {
LAYERS.with_borrow(|layers| !layers.is_empty())
}
/// Draws `child` over the page, as gpui's `deferred` does. gpui paints deferred draws by priority alone, so what is raised inside something raised is laid out and drawn last within it, under `id`: a list opened in a dialog lies over the dialog and keeps its state.
/// Draws `child` over the page; inside a raise, last within it.
pub fn raise(id: impl Into<ElementId>, child: impl IntoElement) -> Raised {
let layer = Layer {
child: child.into_any_element(),