Skip to content

Commit c461256

Browse files
committed
Title listeners
1 parent d2a9370 commit c461256

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/vs/workbench/contrib/chat/browser/chatSessions.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,41 @@ class LocalChatSessionsProvider extends Disposable implements IChatSessionItemPr
148148
'viewId' in widget.viewContext &&
149149
widget.viewContext.viewId === LocalChatSessionsProvider.CHAT_WIDGET_VIEW_ID) {
150150
this._onDidChange.fire();
151+
152+
// Listen for view model changes on this widget
153+
this._register(widget.onDidChangeViewModel(() => {
154+
this._onDidChange.fire();
155+
}));
156+
157+
// Listen for title changes on the current model
158+
this.registerModelTitleListener(widget);
151159
}
152160
}));
161+
162+
// Check for existing chat widgets and register listeners
163+
const existingWidgets = this.chatWidgetService.getWidgetsByLocations(ChatAgentLocation.Panel)
164+
.filter(widget => typeof widget.viewContext === 'object' && 'viewId' in widget.viewContext && widget.viewContext.viewId === LocalChatSessionsProvider.CHAT_WIDGET_VIEW_ID);
165+
166+
existingWidgets.forEach(widget => {
167+
this._register(widget.onDidChangeViewModel(() => {
168+
this._onDidChange.fire();
169+
this.registerModelTitleListener(widget);
170+
}));
171+
172+
// Register title listener for existing widget
173+
this.registerModelTitleListener(widget);
174+
});
175+
}
176+
177+
private registerModelTitleListener(widget: IChatWidget): void {
178+
const model = widget.viewModel?.model;
179+
if (model) {
180+
// Listen for model changes to detect title changes
181+
// Since setCustomTitle doesn't fire an event, we listen to general model changes
182+
this._register(model.onDidChange(() => {
183+
this._onDidChange.fire();
184+
}));
185+
}
153186
}
154187

155188
private initializeCurrentEditorSet(): void {

0 commit comments

Comments
 (0)