diff --git a/crates/ui/src/nav.rs b/crates/ui/src/nav.rs index 02ff3bb3..efa770f7 100644 --- a/crates/ui/src/nav.rs +++ b/crates/ui/src/nav.rs @@ -84,40 +84,36 @@ impl RenderOnce for Nav { fn render(self, _window: &mut Window, cx: &mut App) -> impl IntoElement { let clickable = self.on_click.is_some(); - v_flex() - .id(format!("nav-{}", self.id)) - .w_full() - .h_10() - .child( - h_flex() - .id(self.id) - .h_9() - .w_full() - .px_1p5() - .gap_1p5() - .rounded(cx.theme().radius_lg) - .when_some(self.prefix, |this, prefix| this.child(prefix)) - .child( - h_flex() - .gap_1() - .flex_1() - .min_w_0() - .child(div().flex_1().min_w_0().truncate().child(self.label)) - .when_some(self.suffix, |this, suffix| { - this.child(div().flex_shrink_0().child(suffix)) - }), - ) - .when(clickable, |this| { - this.cursor_pointer() - .hover(|this| this.bg(cx.theme().ghost_element_hover)) - .when(self.selected, |this| { - this.bg(cx.theme().ghost_element_active) - }) - }) - .when_some(self.on_click, |this, handler| { - this.on_click(move |event, window, cx| handler(event, window, cx)) - }) - .refine_style(&self.style), - ) + v_flex().w_full().h_10().child( + h_flex() + .id(self.id) + .h_9() + .w_full() + .px_1p5() + .gap_1p5() + .rounded(cx.theme().radius_lg) + .when_some(self.prefix, |this, prefix| this.child(prefix)) + .child( + h_flex() + .gap_1() + .flex_1() + .min_w_0() + .child(div().flex_1().min_w_0().truncate().child(self.label)) + .when_some(self.suffix, |this, suffix| { + this.child(div().flex_shrink_0().child(suffix)) + }), + ) + .when(clickable, |this| { + this.cursor_pointer() + .hover(|this| this.bg(cx.theme().ghost_element_hover)) + .when(self.selected, |this| { + this.bg(cx.theme().ghost_element_active) + }) + }) + .when_some(self.on_click, |this, handler| { + this.on_click(move |event, window, cx| handler(event, window, cx)) + }) + .refine_style(&self.style), + ) } } diff --git a/crates/workspace/src/dialogs/new_chat.rs b/crates/workspace/src/dialogs/new_chat.rs index 8d1a9877..8ff55b80 100644 --- a/crates/workspace/src/dialogs/new_chat.rs +++ b/crates/workspace/src/dialogs/new_chat.rs @@ -345,7 +345,7 @@ impl NewChat { let profile = persons.read(cx).get(public_key, cx); let public_key = *public_key; - Nav::new(SharedString::from(format!("contact-{}", start + offset))) + Nav::new(start + offset) .label(profile.name()) .text_sm() .when(!AppSettings::get_hide_avatar(cx), |this| { diff --git a/crates/workspace/src/panels/search.rs b/crates/workspace/src/panels/search.rs index e204c9cb..056fbb0e 100644 --- a/crates/workspace/src/panels/search.rs +++ b/crates/workspace/src/panels/search.rs @@ -6,7 +6,7 @@ use chat::{ChatRegistry, Room, RoomKind}; use common::DebouncedDelay; use gpui::prelude::FluentBuilder; use gpui::{ - AnyElement, App, AppContext, Context, ElementId, Entity, EventEmitter, FocusHandle, Focusable, + AnyElement, App, AppContext, Context, Entity, EventEmitter, FocusHandle, Focusable, IntoElement, ParentElement, Render, SharedString, Styled, Subscription, Task, WeakEntity, Window, div, uniform_list, }; @@ -359,24 +359,21 @@ impl SearchPanel { this.select(&pkey_clone, cx); }); - Nav::new(ElementId::NamedInteger( - "search-result".into(), - (range.start + ix) as u64, - )) - .label(profile.name()) - .text_sm() - .font_medium() - .when(!hide_avatar, |this| { - this.prefix( - Avatar::from_source(profile.avatar()) - .seed(profile.avatar_seed()) - .small() - .flex_shrink_0(), - ) - }) - .on_click(handler) - .selected(selected) - .into_any_element() + Nav::new(range.start + ix) + .label(profile.name()) + .text_sm() + .font_medium() + .when(!hide_avatar, |this| { + this.prefix( + Avatar::from_source(profile.avatar()) + .seed(profile.avatar_seed()) + .small() + .flex_shrink_0(), + ) + }) + .on_click(handler) + .selected(selected) + .into_any_element() }) .collect() } @@ -409,24 +406,21 @@ impl SearchPanel { this.select(&pkey_clone, cx); }); - Nav::new(ElementId::NamedInteger( - "contact".into(), - (range.start + ix) as u64, - )) - .label(profile.name().trim()) - .text_sm() - .font_medium() - .when(!hide_avatar, |this| { - this.prefix( - Avatar::from_source(profile.avatar()) - .seed(profile.avatar_seed()) - .small() - .flex_shrink_0(), - ) - }) - .on_click(handler) - .selected(selected) - .into_any_element() + Nav::new(range.start + ix) + .label(profile.name().trim()) + .text_sm() + .font_medium() + .when(!hide_avatar, |this| { + this.prefix( + Avatar::from_source(profile.avatar()) + .seed(profile.avatar_seed()) + .small() + .flex_shrink_0(), + ) + }) + .on_click(handler) + .selected(selected) + .into_any_element() }) .collect() } diff --git a/crates/workspace/src/sidebar/mod.rs b/crates/workspace/src/sidebar/mod.rs index 88066c15..035e852e 100644 --- a/crates/workspace/src/sidebar/mod.rs +++ b/crates/workspace/src/sidebar/mod.rs @@ -853,7 +853,7 @@ impl Sidebar { let dock = self.dock.clone(); let room = room.clone(); - Nav::new(SharedString::from(format!("room-{index}"))) + Nav::new(index) .label(name) .text_sm() .font_medium() @@ -907,7 +907,7 @@ impl Sidebar { let sidebar = cx.entity().downgrade(); let public_key = public_key.to_owned(); - Nav::new(SharedString::from(format!("contact-{index}"))) + Nav::new(index) .label(person.name()) .text_sm() .font_medium() @@ -937,7 +937,7 @@ impl Sidebar { let sidebar = cx.entity().downgrade(); let community = community.clone(); - Nav::new(SharedString::from(format!("com-{index}"))) + Nav::new(index) .label(name) .text_sm() .when(!hide_avatar, |this| {