Add allow to click on the reply preview to go to the message (#10357)

Remco Smits and Bennet Bo Fenner created

Release Notes:

- Added support for scrolling to the message you are replying to when
clicking on the reply preview
([#10028](https://github.com/zed-industries/zed/issues/10028)).

Co-authored-by: Bennet Bo Fenner <53836821+bennetbo@users.noreply.github.com>

Change summary

crates/collab_ui/src/chat_panel.rs | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

Detailed changes

crates/collab_ui/src/chat_panel.rs 🔗

@@ -913,6 +913,10 @@ impl ChatPanel {
 
 impl Render for ChatPanel {
     fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
+        let channel_id = self
+            .active_chat
+            .as_ref()
+            .map(|(c, _)| c.read(cx).channel_id);
         let message_editor = self.message_editor.read(cx);
 
         let reply_to_message_id = message_editor.reply_to_message_id();
@@ -1022,6 +1026,7 @@ impl Render for ChatPanel {
                             .child(
                                 div().flex_shrink().overflow_hidden().child(
                                     h_flex()
+                                        .id(("reply-preview", reply_to_message_id))
                                         .child(Label::new("Replying to ").size(LabelSize::Small))
                                         .child(
                                             div().font_weight(FontWeight::BOLD).child(
@@ -1031,7 +1036,20 @@ impl Render for ChatPanel {
                                                 ))
                                                 .size(LabelSize::Small),
                                             ),
-                                        ),
+                                        )
+                                        .when_some(channel_id, |this, channel_id| {
+                                            this.cursor_pointer().on_click(cx.listener(
+                                                move |chat_panel, _, cx| {
+                                                    chat_panel
+                                                        .select_channel(
+                                                            channel_id,
+                                                            reply_to_message_id.into(),
+                                                            cx,
+                                                        )
+                                                        .detach_and_log_err(cx)
+                                                },
+                                            ))
+                                        }),
                                 ),
                             )
                             .child(