Skip to content

Commit 3b49115

Browse files
authored
Merge pull request microsoft#185698 from microsoft/merogge/help-polish
don't get layout from provider
2 parents fa08b02 + 13e5b64 commit 3b49115

File tree

6 files changed

+22
-25
lines changed

6 files changed

+22
-25
lines changed

src/vs/editor/contrib/hover/browser/contentHover.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,18 @@ import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
2727

2828
const $ = dom.$;
2929

30-
export interface IHoverElementInfo {
31-
dimensions?: { width: number; height: number }; content?: string;
32-
}
33-
3430
export class ContentHoverController extends Disposable {
3531

3632
private readonly _participants: IEditorHoverParticipant[];
3733

3834
private readonly _widget = this._register(this._instantiationService.createInstance(ContentHoverWidget, this._editor));
3935

40-
getWidgetInfo(): IHoverElementInfo | undefined {
36+
getWidgetContent(): string | undefined {
4137
const node = this._widget.getDomNode();
4238
if (!node.textContent) {
4339
return undefined;
4440
}
45-
return { content: node.textContent, dimensions: { width: node.clientWidth, height: node.clientHeight } };
41+
return node.textContent;
4642
}
4743

4844
private readonly _computer: ContentHoverComputer;

src/vs/editor/contrib/hover/browser/hover.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
1515
import { ILanguageService } from 'vs/editor/common/languages/language';
1616
import { GotoDefinitionAtPositionEditorContribution } from 'vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition';
1717
import { HoverStartMode, HoverStartSource } from 'vs/editor/contrib/hover/browser/hoverOperation';
18-
import { ContentHoverWidget, ContentHoverController, IHoverElementInfo } from 'vs/editor/contrib/hover/browser/contentHover';
18+
import { ContentHoverWidget, ContentHoverController } from 'vs/editor/contrib/hover/browser/contentHover';
1919
import { MarginHoverWidget } from 'vs/editor/contrib/hover/browser/marginHover';
2020
import * as nls from 'vs/nls';
2121
import { AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility';
@@ -41,7 +41,7 @@ export class ModesHoverController implements IEditorContribution {
4141

4242
private _contentWidget: ContentHoverController | null;
4343

44-
getWidgetInfo(): IHoverElementInfo | undefined { return this._contentWidget?.getWidgetInfo(); }
44+
getWidgetContent(): string | undefined { return this._contentWidget?.getWidgetContent(); }
4545

4646
private _glyphWidget: MarginHoverWidget | null;
4747

src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ class AccessibilityHelpProvider extends Disposable implements IAccessibleContent
5959
provideContent(): string {
6060
const options = this._editor.getOptions();
6161
const content = [];
62-
content.push(AccessibilityHelpNLS.accessibilityHelpTitle);
6362

6463
if (options.get(EditorOption.inDiffEditor)) {
6564
if (options.get(EditorOption.readOnly)) {
@@ -105,7 +104,7 @@ class EditorAccessibilityHelpContribution extends Disposable {
105104
static ID: 'editorAccessibilityHelpContribution';
106105
constructor() {
107106
super();
108-
this._register(AccessibilityHelpAction.addImplementation(100, 'editor', async accessor => {
107+
this._register(AccessibilityHelpAction.addImplementation(95, 'editor', async accessor => {
109108
const codeEditorService = accessor.get(ICodeEditorService);
110109
const accessibleViewService = accessor.get(IAccessibleViewService);
111110
const instantiationService = accessor.get(IInstantiationService);
@@ -138,22 +137,19 @@ class HoverAccessibleViewContribution extends Disposable {
138137
return false;
139138
}
140139
const controller = ModesHoverController.get(editor);
141-
const hoverInfo = withNullAsUndefined(controller?.getWidgetInfo());
142-
if (!controller || !hoverInfo?.content) {
140+
const content = withNullAsUndefined(controller?.getWidgetContent());
141+
if (!controller || !content) {
143142
return false;
144143
}
145-
function provideContent(): string {
146-
return hoverInfo?.content!;
147-
}
148144
const provider = accessibleViewService.registerProvider({
149145
id: 'hover',
150-
provideContent,
146+
provideContent() { return content; },
151147
onClose() {
152148
provider.dispose();
153149
controller.focus();
154150
},
155151
options: {
156-
ariaLabel: localize('hoverAccessibleView', "Hover Accessible View"), language: 'typescript', type: AccessibleViewType.View, dimensions: controller.getWidgetInfo()!.dimensions
152+
ariaLabel: localize('hoverAccessibleView', "Hover Accessible View"), language: 'typescript', type: AccessibleViewType.View
157153
}
158154
});
159155
accessibleViewService.show('hover');

src/vs/workbench/contrib/accessibility/browser/accessibleView.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ export interface IAccessibleViewOptions {
5454
readMoreUrl?: string;
5555
language?: string;
5656
type: AccessibleViewType;
57-
dimensions?: { width: number; height: number };
5857
}
5958

6059
class AccessibleView extends Disposable {
@@ -138,17 +137,17 @@ class AccessibleView extends Disposable {
138137
provider.onKeyDown?.(e);
139138
}));
140139
this._register(this._editorWidget.onDidBlurEditorText(() => this._contextViewService.hideContextView()));
141-
this._register(this._editorWidget.onDidContentSizeChange(() => this._layout(provider)));
140+
this._register(this._editorWidget.onDidContentSizeChange(() => this._layout()));
142141
this._editorWidget.updateOptions({ ariaLabel: provider.options.ariaLabel });
143142
this._editorWidget.focus();
144143
});
145144
return toDisposable(() => provider.onClose());
146145
}
147146

148-
private _layout(provider: IAccessibleContentProvider): void {
147+
private _layout(): void {
149148
const windowWidth = window.innerWidth;
150-
const width = provider.options.dimensions?.width || windowWidth * DIMENSION_DEFAULT.WIDTH;
151-
this._editorWidget.layout({ width, height: provider.options.dimensions?.height || this._editorWidget.getContentHeight() });
149+
const width = windowWidth * DIMENSION_DEFAULT.WIDTH;
150+
this._editorWidget.layout({ width, height: this._editorWidget.getContentHeight() });
152151
const left = Math.round((windowWidth - width) / 2);
153152
this._editorContainer.style.left = `${left}px`;
154153
}

src/vs/workbench/contrib/chat/browser/actions/chatActions.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
88
import { Disposable } from 'vs/base/common/lifecycle';
99
import { ThemeIcon } from 'vs/base/common/themables';
1010
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
11-
import { EditorAction, EditorAction2, EditorContributionInstantiation, ServicesAccessor, registerEditorAction, registerEditorContribution } from 'vs/editor/browser/editorExtensions';
11+
import { EditorAction, EditorAction2, ServicesAccessor, registerEditorAction } from 'vs/editor/browser/editorExtensions';
1212
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
13+
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
1314
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
1415
import { localize } from 'vs/nls';
1516
import { Action2, IAction2Options, MenuId, registerAction2 } from 'vs/platform/actions/common/actions';
@@ -27,6 +28,8 @@ import { CONTEXT_IN_CHAT_INPUT, CONTEXT_IN_CHAT_SESSION, CONTEXT_PROVIDER_EXISTS
2728
import { IChatDetail, IChatService } from 'vs/workbench/contrib/chat/common/chatService';
2829
import { IChatWidgetHistoryService } from 'vs/workbench/contrib/chat/common/chatWidgetHistoryService';
2930
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
31+
import { Registry } from 'vs/platform/registry/common/platform';
32+
import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
3033

3134
export const CHAT_CATEGORY = { value: localize('chat.category', "Chat"), original: 'Chat' };
3235

@@ -111,7 +114,9 @@ export function registerChatActions() {
111114
}, CONTEXT_IN_CHAT_INPUT));
112115
}
113116
}
114-
registerEditorContribution(ChatAccessibilityHelpContribution.ID, ChatAccessibilityHelpContribution, EditorContributionInstantiation.AfterFirstRender);
117+
118+
const workbenchRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
119+
workbenchRegistry.registerWorkbenchContribution(ChatAccessibilityHelpContribution, LifecyclePhase.Eventually);
115120

116121
registerAction2(class FocusChatInputAction extends Action2 {
117122
constructor() {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import { AccessibilityViewAction } from 'vs/workbench/contrib/accessibility/brow
4141
import { AccessibleViewType, IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView';
4242
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
4343
import { IChatResponseViewModel, isResponseVM } from 'vs/workbench/contrib/chat/common/chatViewModel';
44+
import { CONTEXT_IN_CHAT_SESSION } from 'vs/workbench/contrib/chat/common/chatContextKeys';
4445

4546
// Register configuration
4647
const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration);
@@ -157,7 +158,7 @@ class ChatAccessibleViewContribution extends Disposable {
157158
});
158159
accessibleViewService.show('panelChat');
159160
return true;
160-
}));
161+
}, CONTEXT_IN_CHAT_SESSION));
161162
}
162163
}
163164

0 commit comments

Comments
 (0)