Fix the selected agent logic

Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
This commit is contained in:
Danilo Leal 2025-08-26 12:44:27 -03:00
parent 51ebaa82b0
commit 0f5750cfc0

View file

@ -1859,19 +1859,6 @@ impl AgentPanel {
menu menu
} }
pub fn set_selected_agent(
&mut self,
agent: AgentType,
window: &mut Window,
cx: &mut Context<Self>,
) {
if self.selected_agent != agent {
self.selected_agent = agent.clone();
self.serialize(cx);
}
self.new_agent_thread(agent, window, cx);
}
pub fn selected_agent(&self) -> AgentType { pub fn selected_agent(&self) -> AgentType {
self.selected_agent.clone() self.selected_agent.clone()
} }
@ -1882,6 +1869,11 @@ impl AgentPanel {
window: &mut Window, window: &mut Window,
cx: &mut Context<Self>, cx: &mut Context<Self>,
) { ) {
if self.selected_agent != agent {
self.selected_agent = agent.clone();
self.serialize(cx);
}
match agent { match agent {
AgentType::Zed => { AgentType::Zed => {
window.dispatch_action( window.dispatch_action(
@ -2562,7 +2554,7 @@ impl AgentPanel {
workspace.panel::<AgentPanel>(cx) workspace.panel::<AgentPanel>(cx)
{ {
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
panel.set_selected_agent( panel.new_agent_thread(
AgentType::NativeAgent, AgentType::NativeAgent,
window, window,
cx, cx,
@ -2588,7 +2580,7 @@ impl AgentPanel {
workspace.panel::<AgentPanel>(cx) workspace.panel::<AgentPanel>(cx)
{ {
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
panel.set_selected_agent( panel.new_agent_thread(
AgentType::TextThread, AgentType::TextThread,
window, window,
cx, cx,
@ -2616,7 +2608,7 @@ impl AgentPanel {
workspace.panel::<AgentPanel>(cx) workspace.panel::<AgentPanel>(cx)
{ {
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
panel.set_selected_agent( panel.new_agent_thread(
AgentType::Gemini, AgentType::Gemini,
window, window,
cx, cx,
@ -2643,7 +2635,7 @@ impl AgentPanel {
workspace.panel::<AgentPanel>(cx) workspace.panel::<AgentPanel>(cx)
{ {
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
panel.set_selected_agent( panel.new_agent_thread(
AgentType::ClaudeCode, AgentType::ClaudeCode,
window, window,
cx, cx,
@ -2676,7 +2668,7 @@ impl AgentPanel {
workspace.panel::<AgentPanel>(cx) workspace.panel::<AgentPanel>(cx)
{ {
panel.update(cx, |panel, cx| { panel.update(cx, |panel, cx| {
panel.set_selected_agent( panel.new_agent_thread(
AgentType::Custom { AgentType::Custom {
name: agent_name name: agent_name
.clone(), .clone(),