crates/gpui/Cargo.toml đ
@@ -192,3 +192,7 @@ path = "examples/text_wrapper.rs"
[[example]]
name = "opacity"
path = "examples/opacity.rs"
+
+[[example]]
+name = "uniform_list"
+path = "examples/uniform_list.rs"
ç§ŠćźèȘ and Marshall Bowers created
GPUI: Add example for `uniform_list`
- Added example for `uniform_list`
- Run `cargo run --example uniform_list` to fire up the example
-
https://github.com/user-attachments/assets/bb554fbc-c097-4ce5-8077-782dc4c5c398
Release Notes:
- N/A
https://github.com/user-attachments/assets/bb554fbc-c097-4ce5-8077-782dc4c5c398
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
crates/gpui/Cargo.toml | 4 ++
crates/gpui/examples/uniform_list.rs | 43 ++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+)
@@ -192,3 +192,7 @@ path = "examples/text_wrapper.rs"
[[example]]
name = "opacity"
path = "examples/opacity.rs"
+
+[[example]]
+name = "uniform_list"
+path = "examples/uniform_list.rs"
@@ -0,0 +1,43 @@
+use gpui::*;
+
+struct UniformListExample {}
+
+impl Render for UniformListExample {
+ fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
+ div().size_full().bg(rgb(0xffffff)).child(
+ uniform_list(cx.view().clone(), "entries", 50, |_this, range, _cx| {
+ let mut items = Vec::new();
+ for ix in range {
+ let item = ix + 1;
+
+ items.push(
+ div()
+ .id(ix)
+ .px_2()
+ .cursor_pointer()
+ .on_click(move |_event, _cx| {
+ println!("clicked Item {item:?}");
+ })
+ .child(format!("Item {item}")),
+ );
+ }
+ items
+ })
+ .h_full(),
+ )
+ }
+}
+
+fn main() {
+ App::new().run(|cx: &mut AppContext| {
+ let bounds = Bounds::centered(None, size(px(300.0), px(300.0)), cx);
+ cx.open_window(
+ WindowOptions {
+ window_bounds: Some(WindowBounds::Windowed(bounds)),
+ ..Default::default()
+ },
+ |cx| cx.new_view(|_cx| UniformListExample {}),
+ )
+ .unwrap();
+ });
+}