Unpin agent thread controls (#35661)
This PR moves the new agent thread controls so they're attached to the last message and scroll with the thread history, instead of always being shown above the message editor. Release Notes: - N/A
This commit is contained in:
parent
c595ed19d6
commit
c957f5ba87
1 changed files with 16 additions and 10 deletions
|
@ -785,7 +785,7 @@ impl AcpThreadView {
|
|||
window: &mut Window,
|
||||
cx: &Context<Self>,
|
||||
) -> AnyElement {
|
||||
match &entry {
|
||||
let primary = match &entry {
|
||||
AgentThreadEntry::UserMessage(message) => div()
|
||||
.py_4()
|
||||
.px_2()
|
||||
|
@ -850,6 +850,19 @@ impl AcpThreadView {
|
|||
.px_5()
|
||||
.child(self.render_tool_call(index, tool_call, window, cx))
|
||||
.into_any(),
|
||||
};
|
||||
|
||||
let Some(thread) = self.thread() else {
|
||||
return primary;
|
||||
};
|
||||
let is_generating = matches!(thread.read(cx).status(), ThreadStatus::Generating);
|
||||
if index == total_entries - 1 && !is_generating {
|
||||
v_flex()
|
||||
.child(primary)
|
||||
.child(self.render_thread_controls(cx))
|
||||
.into_any_element()
|
||||
} else {
|
||||
primary
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2404,7 +2417,7 @@ impl AcpThreadView {
|
|||
}
|
||||
}
|
||||
|
||||
fn render_thread_controls(&mut self, cx: &mut Context<Self>) -> impl IntoElement {
|
||||
fn render_thread_controls(&self, cx: &Context<Self>) -> impl IntoElement {
|
||||
let open_as_markdown = IconButton::new("open-as-markdown", IconName::FileText)
|
||||
.icon_size(IconSize::XSmall)
|
||||
.icon_color(Color::Ignored)
|
||||
|
@ -2425,9 +2438,8 @@ impl AcpThreadView {
|
|||
}));
|
||||
|
||||
h_flex()
|
||||
.mt_1()
|
||||
.mr_1()
|
||||
.py_2()
|
||||
.pb_2()
|
||||
.px(RESPONSE_PADDING_X)
|
||||
.opacity(0.4)
|
||||
.hover(|style| style.opacity(1.))
|
||||
|
@ -2487,18 +2499,12 @@ impl Render for AcpThreadView {
|
|||
|
||||
v_flex().flex_1().map(|this| {
|
||||
if self.list_state.item_count() > 0 {
|
||||
let is_generating =
|
||||
matches!(thread_clone.read(cx).status(), ThreadStatus::Generating);
|
||||
|
||||
this.child(
|
||||
list(self.list_state.clone())
|
||||
.with_sizing_behavior(gpui::ListSizingBehavior::Auto)
|
||||
.flex_grow()
|
||||
.into_any(),
|
||||
)
|
||||
.when(!is_generating, |this| {
|
||||
this.child(self.render_thread_controls(cx))
|
||||
})
|
||||
.children(match thread_clone.read(cx).status() {
|
||||
ThreadStatus::Idle | ThreadStatus::WaitingForToolConfirmation => {
|
||||
None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue