diff --git a/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts b/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts index a9fe036efb9..8f9bf85702f 100644 --- a/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts +++ b/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts @@ -175,10 +175,26 @@ export class ChatViewPane extends ViewPane implements IViewWelcomeDelegate { return { position: sideSessionsOnRightPosition ? Position.RIGHT : Position.LEFT, - location: viewLocation ?? ViewContainerLocation.AuxiliaryBar + location: viewLocation ?? ViewContainerLocation.AuxiliaryBar, }; } + private getSessionHoverPosition() { + const viewLocation = this.viewDescriptorService.getViewLocationById(this.id); + const sideBarPosition = this.layoutService.getSideBarPosition(); + + if (this.sessionsViewerOrientation === AgentSessionsViewerOrientation.SideBySide) { + return viewLocation === ViewContainerLocation.Sidebar && sideBarPosition === Position.RIGHT ? HoverPosition.LEFT : HoverPosition.RIGHT; + } + + return { + [Position.LEFT]: HoverPosition.RIGHT, + [Position.RIGHT]: HoverPosition.LEFT, + [Position.TOP]: HoverPosition.BELOW, + [Position.BOTTOM]: HoverPosition.ABOVE + }[viewLocation === ViewContainerLocation.Panel ? this.layoutService.getPanelPosition() : sideBarPosition]; + } + private updateViewPaneClasses(fromEvent: boolean): void { const welcomeEnabled = !this.chatEntitlementService.sentiment.installed; // only show initially until Chat is setup this.viewPaneContainer?.classList.toggle('chat-view-welcome-enabled', welcomeEnabled); @@ -369,10 +385,7 @@ export class ChatViewPane extends ViewPane implements IViewWelcomeDelegate { source: 'chatViewPane', filter: sessionsFilter, overrideStyles: this.getLocationBasedColors().listOverrideStyles, - getHoverPosition: () => { - const { position } = this.getViewPositionAndLocation(); - return position === Position.RIGHT ? HoverPosition.LEFT : HoverPosition.RIGHT; - }, + getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => { return !this._widget || this._widget.isEmpty(); // only track and reveal if chat widget is empty },