From 5310ae636961f7f5627c5b10cc4eb509b8a2e7d8 Mon Sep 17 00:00:00 2001 From: reya Date: Sat, 28 Feb 2026 09:14:40 +0700 Subject: [PATCH] fix icon in dropdown --- crates/coop/src/workspace.rs | 18 ++++++++++++++--- crates/ui/src/menu/popup_menu.rs | 33 +++++++++----------------------- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/crates/coop/src/workspace.rs b/crates/coop/src/workspace.rs index 1e5e6b6..07662c8 100644 --- a/crates/coop/src/workspace.rs +++ b/crates/coop/src/workspace.rs @@ -18,7 +18,7 @@ use ui::button::{Button, ButtonVariants}; use ui::dock_area::dock::DockPlacement; use ui::dock_area::panel::PanelView; use ui::dock_area::{ClosePanel, DockArea, DockItem}; -use ui::menu::DropdownMenu; +use ui::menu::{DropdownMenu, PopupMenuItem}; use ui::{h_flex, v_flex, IconName, Root, Sizable, WindowExtension}; use crate::dialogs::settings; @@ -382,17 +382,29 @@ impl Workspace { .when_some(current_user.as_ref(), |this, public_key| { let persons = PersonRegistry::global(cx); let profile = persons.read(cx).get(public_key, cx); + let avatar = profile.avatar(); + let name = profile.name(); this.child( Button::new("current-user") - .child(Avatar::new(profile.avatar()).xsmall()) + .child(Avatar::new(avatar.clone()).xsmall()) .small() .caret() .compact() .transparent() .dropdown_menu(move |this, _window, _cx| { + let avatar = avatar.clone(); + let name = name.clone(); + this.min_w(px(256.)) - .label(profile.name()) + .item(PopupMenuItem::element(move |_window, cx| { + h_flex() + .gap_1p5() + .text_xs() + .text_color(cx.theme().text_muted) + .child(Avatar::new(avatar.clone()).xsmall()) + .child(name.clone()) + })) .separator() .menu_with_icon( "Profile", diff --git a/crates/ui/src/menu/popup_menu.rs b/crates/ui/src/menu/popup_menu.rs index efe7368..e25f733 100644 --- a/crates/ui/src/menu/popup_menu.rs +++ b/crates/ui/src/menu/popup_menu.rs @@ -1112,25 +1112,17 @@ impl PopupMenu { .border_color(cx.theme().border) .disabled(true), PopupMenuItem::Label(label) => this.disabled(true).cursor_default().child( - h_flex() - .cursor_default() - .items_center() - .gap_x_1() - .children(Self::render_icon(has_left_icon, false, None, window, cx)) - .child( - div() - .flex_1() - .text_xs() - .font_semibold() - .text_color(cx.theme().text_muted) - .child(label.clone()), - ), + h_flex().cursor_default().items_center().gap_x_1().child( + div() + .flex_1() + .text_xs() + .font_semibold() + .text_color(cx.theme().text_muted) + .child(label.clone()), + ), ), PopupMenuItem::ElementItem { - render, - icon, - disabled, - .. + render, disabled, .. } => this .when(!disabled, |this| { this.on_click( @@ -1144,13 +1136,6 @@ impl PopupMenu { .min_h(item_height) .items_center() .gap_x_2() - .children(Self::render_icon( - has_left_icon, - is_left_check, - icon.clone(), - window, - cx, - )) .child((render)(window, cx)) .children(right_check_icon.map(|icon| icon.ml_3())), ),