@@ -19,7 +19,7 @@ use markdown::{CodeBlockRenderer, Markdown, MarkdownElement, MarkdownStyle};
use project::Project;
use settings::Settings;
use theme::ThemeSettings;
-use ui::{Tooltip, prelude::*};
+use ui::{Tooltip, WithScrollbar, prelude::*};
use util::ResultExt as _;
use workspace::{
Item, ItemHandle, ToolbarItemEvent, ToolbarItemLocation, ToolbarItemView, Workspace,
@@ -291,17 +291,19 @@ impl AcpTools {
let expanded = self.expanded.contains(&index);
v_flex()
+ .id(index)
+ .group("message")
+ .cursor_pointer()
+ .font_buffer(cx)
.w_full()
- .px_4()
.py_3()
- .border_color(colors.border)
- .border_b_1()
+ .pl_4()
+ .pr_5()
.gap_2()
.items_start()
- .font_buffer(cx)
.text_size(base_size)
- .id(index)
- .group("message")
+ .border_color(colors.border)
+ .border_b_1()
.hover(|this| this.bg(colors.element_background.opacity(0.5)))
.on_click(cx.listener(move |this, _, _, cx| {
if this.expanded.contains(&index) {
@@ -323,15 +325,14 @@ impl AcpTools {
h_flex()
.w_full()
.gap_2()
- .items_center()
.flex_shrink_0()
.child(match message.direction {
- acp::StreamMessageDirection::Incoming => {
- ui::Icon::new(ui::IconName::ArrowDown).color(Color::Error)
- }
- acp::StreamMessageDirection::Outgoing => {
- ui::Icon::new(ui::IconName::ArrowUp).color(Color::Success)
- }
+ acp::StreamMessageDirection::Incoming => Icon::new(IconName::ArrowDown)
+ .color(Color::Error)
+ .size(IconSize::Small),
+ acp::StreamMessageDirection::Outgoing => Icon::new(IconName::ArrowUp)
+ .color(Color::Success)
+ .size(IconSize::Small),
})
.child(
Label::new(message.name.clone())
@@ -501,7 +502,7 @@ impl Focusable for AcpTools {
}
impl Render for AcpTools {
- fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
+ fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
v_flex()
.track_focus(&self.focus_handle)
.size_full()
@@ -516,13 +517,19 @@ impl Render for AcpTools {
.child("No messages recorded yet")
.into_any()
} else {
- list(
- connection.list_state.clone(),
- cx.processor(Self::render_message),
- )
- .with_sizing_behavior(gpui::ListSizingBehavior::Auto)
- .flex_grow()
- .into_any()
+ div()
+ .size_full()
+ .flex_grow()
+ .child(
+ list(
+ connection.list_state.clone(),
+ cx.processor(Self::render_message),
+ )
+ .with_sizing_behavior(gpui::ListSizingBehavior::Auto)
+ .size_full(),
+ )
+ .vertical_scrollbar_for(connection.list_state.clone(), window, cx)
+ .into_any()
}
}
None => h_flex()