diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts index 1cd4bf8b8f3..0a2a25d23da 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts @@ -607,6 +607,7 @@ export class LiveStrategy3 extends EditModeStrategy { private readonly _store: DisposableStore = new DisposableStore(); private readonly _sessionStore: DisposableStore = new DisposableStore(); + private readonly _previewZone: Lazy; private readonly _ctxCurrentChangeHasDiff: IContextKey; private readonly _ctxCurrentChangeShowsDiff: IContextKey; @@ -631,6 +632,8 @@ export class LiveStrategy3 extends EditModeStrategy { this._ctxCurrentChangeShowsDiff = CTX_INLINE_CHAT_CHANGE_SHOWS_DIFF.bindTo(contextKeyService); this._modifiedRangesDecorations = this._editor.createDecorationsCollection(); + this._previewZone = new Lazy(() => _instaService.createInstance(InlineChatFileCreatePreviewWidget, _editor)); + } override dispose(): void { @@ -939,10 +942,10 @@ export class LiveStrategy3 extends EditModeStrategy { override async renderChanges(response: ReplyResponse) { - if (response.untitledTextModel) { - this._zone.widget.showCreatePreview(response.untitledTextModel); + if (response.untitledTextModel && !response.untitledTextModel.isDisposed()) { + this._previewZone.value.showCreation(this._session.wholeRange.value.getStartPosition().delta(-1), response.untitledTextModel); } else { - this._zone.widget.hideCreatePreview(); + this._previewZone.value.hide(); } return await this._showDiff(true, false); diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts index 725461bced1..1a17f033998 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts @@ -569,7 +569,6 @@ export class InlineChatWidget { } updateToolbar(show: boolean) { - this._elements.extraToolbar.classList.toggle('hidden', !show); this._elements.statusToolbar.classList.toggle('hidden', !show); this._elements.feedbackToolbar.classList.toggle('hidden', !show); this._elements.status.classList.toggle('actions', show); @@ -582,6 +581,7 @@ export class InlineChatWidget { setExtraButtons(buttons: IAction[]) { const bar = this._instantiationService.createInstance(WorkbenchButtonBar, this._elements.extraToolbar, { telemetrySource: 'inlineChat' }); bar.update(buttons); + this._elements.extraToolbar.classList.toggle('hidden', buttons.length === 0); this._extraButtonsCleanup.value = bar; }