mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-26 08:31:04 +00:00
Optimize user menu trigger
This commit is contained in:
parent
c2f5855fdc
commit
49ce1977e3
1 changed files with 18 additions and 16 deletions
|
@ -49,7 +49,8 @@ pub struct CollabTitlebarItem {
|
|||
client: Arc<Client>,
|
||||
workspace: WeakViewHandle<Workspace>,
|
||||
contacts_popover: Option<ViewHandle<ContactsPopover>>,
|
||||
user_menu: Option<ViewHandle<ContextMenu>>,
|
||||
user_menu: ViewHandle<ContextMenu>,
|
||||
user_menu_is_visible: bool,
|
||||
_subscriptions: Vec<Subscription>,
|
||||
}
|
||||
|
||||
|
@ -176,7 +177,13 @@ impl CollabTitlebarItem {
|
|||
user_store,
|
||||
client,
|
||||
contacts_popover: None,
|
||||
user_menu: None,
|
||||
user_menu: cx.add_view(|cx| {
|
||||
let view_id = cx.view_id();
|
||||
let mut menu = ContextMenu::new(view_id, cx);
|
||||
menu.set_position_mode(OverlayPositionMode::Local);
|
||||
menu
|
||||
}),
|
||||
user_menu_is_visible: false,
|
||||
_subscriptions: subscriptions,
|
||||
}
|
||||
}
|
||||
|
@ -289,14 +296,8 @@ impl CollabTitlebarItem {
|
|||
}
|
||||
|
||||
pub fn toggle_user_menu(&mut self, _: &ToggleUserMenu, cx: &mut ViewContext<Self>) {
|
||||
if self.user_menu.take().is_none() {
|
||||
let user_menu = cx.add_view(|cx| {
|
||||
let view_id = cx.view_id();
|
||||
let mut menu = ContextMenu::new(view_id, cx);
|
||||
menu.set_position_mode(OverlayPositionMode::Local);
|
||||
menu
|
||||
});
|
||||
user_menu.update(cx, |user_menu, cx| {
|
||||
if !self.user_menu_is_visible {
|
||||
self.user_menu.update(cx, |user_menu, cx| {
|
||||
let items = if let Some(_) = self.user_store.read(cx).current_user() {
|
||||
vec![
|
||||
ContextMenuItem::action("Settings", zed_actions::OpenSettings),
|
||||
|
@ -322,8 +323,8 @@ impl CollabTitlebarItem {
|
|||
|
||||
user_menu.show(Default::default(), AnchorCorner::TopRight, items, cx);
|
||||
});
|
||||
self.user_menu = Some(user_menu);
|
||||
}
|
||||
self.user_menu_is_visible = !self.user_menu_is_visible;
|
||||
}
|
||||
|
||||
fn render_toggle_contacts_button(
|
||||
|
@ -699,11 +700,12 @@ impl CollabTitlebarItem {
|
|||
)
|
||||
.contained(),
|
||||
)
|
||||
.with_children(
|
||||
self.user_menu
|
||||
.as_ref()
|
||||
.map(|menu| ChildView::new(&menu, cx).aligned().bottom().right()),
|
||||
)
|
||||
.with_children(self.user_menu_is_visible.then(|| {
|
||||
ChildView::new(&self.user_menu, cx)
|
||||
.aligned()
|
||||
.bottom()
|
||||
.right()
|
||||
}))
|
||||
.into_any()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue