Properly display keybindings in context menus (#2758)

Fixes https://github.com/zed-industries/community/issues/1751


![image](https://github.com/zed-industries/zed/assets/2690773/cbf29eca-0fca-4aff-be50-810eb80fdcb5)

![image](https://github.com/zed-industries/zed/assets/2690773/330054eb-ba92-4c8f-862f-06f276cc262b)


Release Notes:

- Fixed context menu keybindings not updating with custom keybinding
values
This commit is contained in:
Kirill Bulatov 2023-07-20 12:25:41 +03:00 committed by GitHub
commit 257dd57fe4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 13 deletions

View File

@ -20,7 +20,7 @@ use live_kit_client::{
};
use postage::stream::Stream;
use project::Project;
use std::{future::Future, mem, panic::Location, pin::Pin, sync::Arc, time::Duration};
use std::{future::Future, mem, pin::Pin, sync::Arc, time::Duration};
use util::{post_inc, ResultExt, TryFutureExt};
pub const RECONNECT_TIMEOUT: Duration = Duration::from_secs(30);
@ -1089,7 +1089,6 @@ impl Room {
#[track_caller]
pub fn share_microphone(&mut self, cx: &mut ModelContext<Self>) -> Task<Result<()>> {
dbg!(Location::caller());
if self.status.is_offline() {
return Task::ready(Err(anyhow!("room is offline")));
} else if self.is_sharing_mic() {

View File

@ -3411,18 +3411,14 @@ impl<'a, 'b, 'c, V: View> LayoutContext<'a, 'b, 'c, V> {
handler_depth = Some(contexts.len())
}
let action_contexts = if let Some(depth) = handler_depth {
&contexts[depth..]
} else {
&contexts
};
self.keystroke_matcher
.bindings_for_action(action.id())
.find_map(|b| {
let highest_handler = handler_depth?;
if action.eq(b.action())
&& (0..=highest_handler).any(|depth| b.match_context(&contexts[depth..]))
{
Some(b.keystrokes().into())
} else {
None
}
})
.keystrokes_for_action(action, action_contexts)
}
fn notify_if_view_ancestors_change(&mut self, view_id: usize) {