diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 4a9f647d2f6fc20d86f552a02ffe287355696231..4fa90a88f1592993ea1e4c40b1f559f24f43feab 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -246,6 +246,7 @@ "ctrl-alt-/": "assistant::ToggleModelSelector", "ctrl-shift-a": "agent::ToggleContextPicker", "ctrl-shift-o": "agent::ToggleNavigationMenu", + "ctrl-shift-i": "agent::ToggleOptionsMenu", "shift-escape": "agent::ExpandMessageEditor", "ctrl-e": "agent::ChatMode", "ctrl-alt-e": "agent::RemoveAllContext" diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 2393372c9131cfc32685c39797895f4ffd44cb70..ef0e197ce02ce635fe0dd70b8c2ce6f591fe2b63 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -291,6 +291,7 @@ "cmd-alt-/": "assistant::ToggleModelSelector", "cmd-shift-a": "agent::ToggleContextPicker", "cmd-shift-o": "agent::ToggleNavigationMenu", + "cmd-shift-i": "agent::ToggleOptionsMenu", "shift-escape": "agent::ExpandMessageEditor", "cmd-e": "agent::ChatMode", "cmd-alt-e": "agent::RemoveAllContext" diff --git a/crates/agent/src/assistant.rs b/crates/agent/src/assistant.rs index 3947e42ede88bd8873f82fb7d7d5c5b0a28d3fdf..3c9b915b87b7568f32c8e697600a15eff790a7f1 100644 --- a/crates/agent/src/assistant.rs +++ b/crates/agent/src/assistant.rs @@ -51,6 +51,7 @@ actions!( NewTextThread, ToggleContextPicker, ToggleNavigationMenu, + ToggleOptionsMenu, DeleteRecentlyOpenThread, ToggleProfileSelector, RemoveAllContext, diff --git a/crates/agent/src/assistant_panel.rs b/crates/agent/src/assistant_panel.rs index 29c9fde5df40b30956b0425469f60d407c9650a5..28e3ac45209865291cf4586d4146f8171df1c4f5 100644 --- a/crates/agent/src/assistant_panel.rs +++ b/crates/agent/src/assistant_panel.rs @@ -50,7 +50,7 @@ use crate::ui::UsageBanner; use crate::{ AddContextServer, AgentDiff, DeleteRecentlyOpenThread, ExpandMessageEditor, InlineAssistant, NewTextThread, NewThread, OpenActiveThreadAsMarkdown, OpenAgentDiff, OpenHistory, ThreadEvent, - ToggleContextPicker, ToggleNavigationMenu, + ToggleContextPicker, ToggleNavigationMenu, ToggleOptionsMenu, }; pub fn init(cx: &mut App) { @@ -113,6 +113,14 @@ pub fn init(cx: &mut App) { panel.toggle_navigation_menu(&ToggleNavigationMenu, window, cx); }); } + }) + .register_action(|workspace, _: &ToggleOptionsMenu, window, cx| { + if let Some(panel) = workspace.panel::(cx) { + workspace.focus_panel::(window, cx); + panel.update(cx, |panel, cx| { + panel.toggle_options_menu(&ToggleOptionsMenu, window, cx); + }); + } }); }, ) @@ -914,6 +922,15 @@ impl AssistantPanel { self.assistant_navigation_menu_handle.toggle(window, cx); } + pub fn toggle_options_menu( + &mut self, + _: &ToggleOptionsMenu, + window: &mut Window, + cx: &mut Context, + ) { + self.assistant_dropdown_menu_handle.toggle(window, cx); + } + pub fn open_agent_diff( &mut self, _: &OpenAgentDiff, @@ -1356,12 +1373,22 @@ impl AssistantPanel { }), ); - let agent_extra_menu = PopoverMenu::new("assistant-menu") + let agent_extra_menu = PopoverMenu::new("agent-options-menu") .trigger_with_tooltip( - IconButton::new("new", IconName::Ellipsis) - .icon_size(IconSize::Small) - .style(ButtonStyle::Subtle), - Tooltip::text("Toggle Agent Menu"), + IconButton::new("agent-options-menu", IconName::Ellipsis) + .icon_size(IconSize::Small), + { + let focus_handle = focus_handle.clone(); + move |window, cx| { + Tooltip::for_action_in( + "Toggle Agent Menu", + &ToggleOptionsMenu, + &focus_handle, + window, + cx, + ) + } + }, ) .anchor(Corner::TopRight) .with_handle(self.assistant_dropdown_menu_handle.clone()) @@ -2150,6 +2177,7 @@ impl Render for AssistantPanel { .on_action(cx.listener(Self::open_agent_diff)) .on_action(cx.listener(Self::go_back)) .on_action(cx.listener(Self::toggle_navigation_menu)) + .on_action(cx.listener(Self::toggle_options_menu)) .child(self.render_toolbar(window, cx)) .map(|parent| match &self.active_view { ActiveView::Thread { .. } => parent