diff --git a/crates/collab_ui/src/chat_panel.rs b/crates/collab_ui/src/chat_panel.rs index 5c961e45350c6b1bf46ae11de37d0b05c4c9f53e..9b7cec756dd95499feebbdff7e0ab461a6fbf495 100644 --- a/crates/collab_ui/src/chat_panel.rs +++ b/crates/collab_ui/src/chat_panel.rs @@ -7,9 +7,9 @@ use collections::HashMap; use db::kvp::KEY_VALUE_STORE; use editor::Editor; use gpui::{ - actions, div, list, prelude::*, px, Action, AppContext, AsyncWindowContext, CursorStyle, - DismissEvent, ElementId, EventEmitter, FocusHandle, FocusableView, FontStyle, FontWeight, - HighlightStyle, ListOffset, ListScrollEvent, ListState, Model, Render, StyledText, + actions, div, list, prelude::*, px, Action, AppContext, AsyncWindowContext, ClipboardItem, + CursorStyle, DismissEvent, ElementId, EventEmitter, FocusHandle, FocusableView, FontStyle, + FontWeight, HighlightStyle, ListOffset, ListScrollEvent, ListState, Model, Render, StyledText, Subscription, Task, View, ViewContext, VisualContext, WeakView, }; use language::LanguageRegistry; @@ -629,6 +629,20 @@ impl ChatPanel { }) }), ) + .entry( + "Copy message text", + None, + cx.handler_for(&this, move |this, cx| { + this.active_chat().map(|active_chat| { + if let Some(message) = + active_chat.read(cx).find_loaded_message(message_id) + { + let text = message.body.clone(); + cx.write_to_clipboard(ClipboardItem::new(text)) + } + }); + }), + ) .when(can_delete_message, move |menu| { menu.entry( "Delete message",