diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 321aa283690c073d820c7b4f664c54f1900782fa..5bbc93c390e86aa864cffdf0f59561b266890602 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -224,7 +224,8 @@ "use_key_equivalents": true, "bindings": { "cmd-n": "assistant2::NewThread", - "cmd-shift-h": "assistant2::OpenHistory" + "cmd-shift-h": "assistant2::OpenHistory", + "cmd-shift-m": "assistant2::ToggleModelSelector" } }, { diff --git a/crates/assistant2/src/message_editor.rs b/crates/assistant2/src/message_editor.rs index 50715d91a469f116c6a459996cc12f74d3f2c8a7..64a40f5b9570c866007541dd88be3c942f66bd4f 100644 --- a/crates/assistant2/src/message_editor.rs +++ b/crates/assistant2/src/message_editor.rs @@ -7,7 +7,10 @@ use language_model::{LanguageModelRegistry, LanguageModelRequestTool}; use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu}; use settings::{update_settings_file, Settings}; use theme::ThemeSettings; -use ui::{prelude::*, ButtonLike, CheckboxWithLabel, ElevationIndex, KeyBinding, Tooltip}; +use ui::{ + prelude::*, ButtonLike, CheckboxWithLabel, ElevationIndex, KeyBinding, PopoverMenuHandle, + Tooltip, +}; use workspace::Workspace; use crate::assistant_settings::AssistantSettings; @@ -23,6 +26,7 @@ pub struct MessageEditor { context_store: Model, context_strip: View, language_model_selector: View, + language_model_selector_menu_handle: PopoverMenuHandle, use_tools: bool, } @@ -67,10 +71,15 @@ impl MessageEditor { cx, ) }), + language_model_selector_menu_handle: PopoverMenuHandle::default(), use_tools: false, } } + fn toggle_model_selector(&mut self, _: &ToggleModelSelector, cx: &mut ViewContext) { + self.language_model_selector_menu_handle.toggle(cx); + } + fn chat(&mut self, _: &Chat, cx: &mut ViewContext) { self.send_to_model(RequestKind::Chat, cx); } @@ -163,6 +172,7 @@ impl MessageEditor { Tooltip::for_action_in("Change Model", &ToggleModelSelector, &focus_handle, cx) }), ) + .with_handle(self.language_model_selector_menu_handle.clone()) } } @@ -182,6 +192,7 @@ impl Render for MessageEditor { v_flex() .key_context("MessageEditor") .on_action(cx.listener(Self::chat)) + .on_action(cx.listener(Self::toggle_model_selector)) .size_full() .gap_2() .p_2()