Don't steal focus when an agent spawns a child via MCP
This commit is contained in:
@@ -700,8 +700,26 @@ func (st *uiState) scratchpadsChanged() {
|
||||
}
|
||||
}
|
||||
|
||||
// OnChildSpawned auto-focuses the new child.
|
||||
// OnChildSpawned auto-focuses the new child when the spawn came from
|
||||
// the user (palette, persistence restore, or an external MCP client with
|
||||
// no resolved identity). When ParentID is set — meaning a patterm-managed
|
||||
// agent spawned this child via spawn_agent/spawn_process — focus stays
|
||||
// on whatever the user was watching; the new child is still surfaced in
|
||||
// the sidebar/tab bar so it's reachable via the palette or select_process.
|
||||
func (st *uiState) OnChildSpawned(c *Child) {
|
||||
if c.ParentID != "" {
|
||||
st.mu.Lock()
|
||||
if st.palette != nil {
|
||||
st.palette.children = st.sess.Children()
|
||||
st.palette.focused = st.focusedID
|
||||
st.palette.rebuild()
|
||||
st.renderPaletteLocked()
|
||||
}
|
||||
st.mu.Unlock()
|
||||
st.drawTabBar()
|
||||
st.drawSidebar()
|
||||
return
|
||||
}
|
||||
st.marquee.reset()
|
||||
layout := st.layoutSnapshot()
|
||||
onAlt := childIsOnAlt(c)
|
||||
|
||||
Reference in New Issue
Block a user