This PR mainlines the current state of new GPUI2-based UI from the `gpui2-ui` branch. Included in this is a performance improvement to make use of the `TextLayoutCache` when calling `layout` for `Text` elements. Release Notes: - N/A --------- Co-authored-by: Nate Butler <iamnbutler@gmail.com> Co-authored-by: Antonio Scandurra <me@as-cii.com>
33 lines
1.1 KiB
Rust
33 lines
1.1 KiB
Rust
use crate::prelude::*;
|
|
use crate::{OrderMethod, Palette, PaletteItem};
|
|
|
|
#[derive(Element)]
|
|
pub struct RecentProjects {
|
|
scroll_state: ScrollState,
|
|
}
|
|
|
|
impl RecentProjects {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
scroll_state: ScrollState::default(),
|
|
}
|
|
}
|
|
|
|
fn render<V: 'static>(&mut self, _: &mut V, cx: &mut ViewContext<V>) -> impl IntoElement<V> {
|
|
div().child(
|
|
Palette::new(self.scroll_state.clone())
|
|
.items(vec![
|
|
PaletteItem::new("zed").sublabel("~/projects/zed"),
|
|
PaletteItem::new("saga").sublabel("~/projects/saga"),
|
|
PaletteItem::new("journal").sublabel("~/journal"),
|
|
PaletteItem::new("dotfiles").sublabel("~/dotfiles"),
|
|
PaletteItem::new("zed.dev").sublabel("~/projects/zed.dev"),
|
|
PaletteItem::new("laminar").sublabel("~/projects/laminar"),
|
|
])
|
|
.placeholder("Recent Projects...")
|
|
.empty_string("No matches")
|
|
.default_order(OrderMethod::Ascending),
|
|
)
|
|
}
|
|
}
|