Skip to content

Commit f20278e

Browse files
authored
fix jumping chat and better tabbing thru chat (microsoft#252132)
1 parent 3c40060 commit f20278e

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

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

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -326,18 +326,18 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer<Ch
326326
},
327327
}));
328328
}
329-
templateDisposables.add(dom.addDisposableListener(rowContainer, 'mouseenter', () => {
329+
templateDisposables.add(dom.addDisposableListener(rowContainer, dom.EventType.MOUSE_ENTER, () => {
330330
if (isRequestVM(template.currentElement)) {
331-
dom.show(requestHover);
331+
this.hoverVisible(requestHover);
332332
}
333333
}));
334334

335-
templateDisposables.add(dom.addDisposableListener(rowContainer, 'mouseleave', () => {
335+
templateDisposables.add(dom.addDisposableListener(rowContainer, dom.EventType.MOUSE_LEAVE, () => {
336336
if (isRequestVM(template.currentElement)) {
337-
dom.hide(requestHover);
337+
this.hoverHidden(requestHover);
338338
}
339339
}));
340-
dom.hide(requestHover);
340+
this.hoverHidden(requestHover);
341341
const user = dom.append(header, $('.user'));
342342
const avatarContainer = dom.append(user, $('.avatar-container'));
343343
const username = dom.append(user, $('h3.username'));
@@ -446,7 +446,7 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer<Ch
446446
templateData.username.classList.toggle('hidden', element.username === COPILOT_USERNAME);
447447
templateData.avatarContainer.classList.toggle('hidden', element.username === COPILOT_USERNAME);
448448

449-
dom.hide(templateData.requestHover);
449+
this.hoverHidden(templateData.requestHover);
450450
dom.clearNode(templateData.detail);
451451
if (isResponseVM(element)) {
452452
this.renderDetail(element, templateData);
@@ -1160,12 +1160,11 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer<Ch
11601160
const codeBlockStartIndex = this.getCodeBlockStartIndex(context);
11611161
const markdownPart = templateData.instantiationService.createInstance(ChatMarkdownContentPart, markdown, context, this._editorPool, fillInIncompleteTokens, codeBlockStartIndex, this.renderer, this._currentLayoutWidth, this.codeBlockModelCollection, {});
11621162
if (isRequestVM(element)) {
1163-
markdownPart.domNode.tabIndex = 0;
1164-
markdownPart.addDisposable(dom.addDisposableListener(markdownPart.domNode, 'focus', () => {
1165-
dom.show(templateData.requestHover);
1163+
markdownPart.addDisposable(dom.addDisposableListener(markdownPart.domNode, dom.EventType.FOCUS, () => {
1164+
this.hoverVisible(templateData.requestHover);
11661165
}));
1167-
markdownPart.addDisposable(dom.addDisposableListener(markdownPart.domNode, 'blur', () => {
1168-
dom.hide(templateData.requestHover);
1166+
markdownPart.addDisposable(dom.addDisposableListener(markdownPart.domNode, dom.EventType.BLUR, () => {
1167+
this.hoverHidden(templateData.requestHover);
11691168
}));
11701169
}
11711170

@@ -1193,6 +1192,14 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer<Ch
11931192
disposeTemplate(templateData: IChatListItemTemplate): void {
11941193
templateData.templateDisposables.dispose();
11951194
}
1195+
1196+
private hoverVisible(requestHover: HTMLElement) {
1197+
requestHover.style.opacity = '1';
1198+
}
1199+
1200+
private hoverHidden(requestHover: HTMLElement) {
1201+
requestHover.style.opacity = '0';
1202+
}
11961203
}
11971204

11981205
export class ChatListDelegate implements IListVirtualDelegate<ChatTreeItem> {

src/vs/workbench/contrib/chat/browser/media/chat.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1924,6 +1924,10 @@ have to be updated for changes to the rules above, or to support more deeply nes
19241924
padding: 3px 3px;
19251925
}
19261926

1927+
.request-hover:focus-within {
1928+
opacity: 1 !important;
1929+
}
1930+
19271931
.interactive-list > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row {
19281932
overflow: visible !important;
19291933
}

0 commit comments

Comments
 (0)