Skip to content

Commit feb823c

Browse files
authored
Merge pull request microsoft#209442 from microsoft/tyriar/204965
Introduce IHoverService.setupUpdatableHover
2 parents 23860e9 + 5d92626 commit feb823c

File tree

119 files changed

+1195
-869
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+1195
-869
lines changed

src/vs/base/browser/ui/actionbar/actionViewItems.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { IActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar';
1111
import { IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview';
1212
import { getDefaultHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegateFactory';
1313
import { IHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate';
14-
import { ICustomHover, setupCustomHover } from 'vs/base/browser/ui/hover/updatableHoverWidget';
1514
import { ISelectBoxOptions, ISelectBoxStyles, ISelectOptionItem, SelectBox } from 'vs/base/browser/ui/selectBox/selectBox';
1615
import { IToggleStyles } from 'vs/base/browser/ui/toggle/toggle';
1716
import { Action, ActionRunner, IAction, IActionChangeEvent, IActionRunner, Separator } from 'vs/base/common/actions';
@@ -20,6 +19,8 @@ import * as platform from 'vs/base/common/platform';
2019
import * as types from 'vs/base/common/types';
2120
import 'vs/css!./actionbar';
2221
import * as nls from 'vs/nls';
22+
import type { IUpdatableHover } from 'vs/base/browser/ui/hover/hover';
23+
import { getBaseLayerHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate2';
2324

2425
export interface IBaseActionViewItemOptions {
2526
draggable?: boolean;
@@ -35,7 +36,7 @@ export class BaseActionViewItem extends Disposable implements IActionViewItem {
3536
_context: unknown;
3637
readonly _action: IAction;
3738

38-
private customHover?: ICustomHover;
39+
private customHover?: IUpdatableHover;
3940

4041
get action() {
4142
return this._action;
@@ -232,7 +233,7 @@ export class BaseActionViewItem extends Disposable implements IActionViewItem {
232233
} else {
233234
if (!this.customHover && title !== '') {
234235
const hoverDelegate = this.options.hoverDelegate ?? getDefaultHoverDelegate('element');
235-
this.customHover = this._store.add(setupCustomHover(hoverDelegate, this.element, title));
236+
this.customHover = this._store.add(getBaseLayerHoverDelegate().setupUpdatableHover(hoverDelegate, this.element, title));
236237
} else if (this.customHover) {
237238
this.customHover.update(title);
238239
}

src/vs/base/browser/ui/button/button.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { renderMarkdown, renderStringAsPlaintext } from 'vs/base/browser/markdow
1111
import { Gesture, EventType as TouchEventType } from 'vs/base/browser/touch';
1212
import { getDefaultHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegateFactory';
1313
import { IHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate';
14-
import { ICustomHover, setupCustomHover } from 'vs/base/browser/ui/hover/updatableHoverWidget';
1514
import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels';
1615
import { Action, IAction, IActionRunner } from 'vs/base/common/actions';
1716
import { Codicon } from 'vs/base/common/codicons';
@@ -23,6 +22,8 @@ import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecyc
2322
import { ThemeIcon } from 'vs/base/common/themables';
2423
import 'vs/css!./button';
2524
import { localize } from 'vs/nls';
25+
import type { IUpdatableHover } from 'vs/base/browser/ui/hover/hover';
26+
import { getBaseLayerHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate2';
2627

2728
export interface IButtonOptions extends Partial<IButtonStyles> {
2829
readonly title?: boolean | string;
@@ -78,7 +79,7 @@ export class Button extends Disposable implements IButton {
7879
protected _label: string | IMarkdownString = '';
7980
protected _labelElement: HTMLElement | undefined;
8081
protected _labelShortElement: HTMLElement | undefined;
81-
private _hover: ICustomHover | undefined;
82+
private _hover: IUpdatableHover | undefined;
8283

8384
private _onDidClick = this._register(new Emitter<Event>());
8485
get onDidClick(): BaseEvent<Event> { return this._onDidClick.event; }
@@ -304,7 +305,7 @@ export class Button extends Disposable implements IButton {
304305

305306
private setTitle(title: string) {
306307
if (!this._hover && title !== '') {
307-
this._hover = this._register(setupCustomHover(this.options.hoverDelegate ?? getDefaultHoverDelegate('mouse'), this._element, title));
308+
this._hover = this._register(getBaseLayerHoverDelegate().setupUpdatableHover(this.options.hoverDelegate ?? getDefaultHoverDelegate('mouse'), this._element, title));
308309
} else if (this._hover) {
309310
this._hover.update(title);
310311
}
@@ -368,7 +369,7 @@ export class ButtonWithDropdown extends Disposable implements IButton {
368369
this.separator.style.backgroundColor = options.buttonSeparator ?? '';
369370

370371
this.dropdownButton = this._register(new Button(this.element, { ...options, title: false, supportIcons: true }));
371-
this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), this.dropdownButton.element, localize("button dropdown more actions", 'More Actions...')));
372+
this._register(getBaseLayerHoverDelegate().setupUpdatableHover(getDefaultHoverDelegate('mouse'), this.dropdownButton.element, localize("button dropdown more actions", 'More Actions...')));
372373
this.dropdownButton.element.setAttribute('aria-haspopup', 'true');
373374
this.dropdownButton.element.setAttribute('aria-expanded', 'false');
374375
this.dropdownButton.element.classList.add('monaco-dropdown-button');

src/vs/base/browser/ui/dropdown/dropdown.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import { $, addDisposableListener, append, EventHelper, EventType, isMouseEvent
88
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
99
import { EventType as GestureEventType, Gesture } from 'vs/base/browser/touch';
1010
import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview';
11+
import type { IUpdatableHover } from 'vs/base/browser/ui/hover/hover';
12+
import { getBaseLayerHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate2';
1113
import { getDefaultHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegateFactory';
12-
import { ICustomHover, setupCustomHover } from 'vs/base/browser/ui/hover/updatableHoverWidget';
1314
import { IMenuOptions } from 'vs/base/browser/ui/menu/menu';
1415
import { ActionRunner, IAction } from 'vs/base/common/actions';
1516
import { Emitter } from 'vs/base/common/event';
@@ -36,7 +37,7 @@ class BaseDropdown extends ActionRunner {
3637
private _onDidChangeVisibility = this._register(new Emitter<boolean>());
3738
readonly onDidChangeVisibility = this._onDidChangeVisibility.event;
3839

39-
private hover: ICustomHover | undefined;
40+
private hover: IUpdatableHover | undefined;
4041

4142
constructor(container: HTMLElement, options: IBaseDropdownOptions) {
4243
super();
@@ -106,7 +107,7 @@ class BaseDropdown extends ActionRunner {
106107
set tooltip(tooltip: string) {
107108
if (this._label) {
108109
if (!this.hover && tooltip !== '') {
109-
this.hover = this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), this._label, tooltip));
110+
this.hover = this._register(getBaseLayerHoverDelegate().setupUpdatableHover(getDefaultHoverDelegate('mouse'), this._label, tooltip));
110111
} else if (this.hover) {
111112
this.hover.update(tooltip);
112113
}

src/vs/base/browser/ui/dropdown/dropdownActionViewItem.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import { KeyCode } from 'vs/base/common/keyCodes';
1919
import { ResolvedKeybinding } from 'vs/base/common/keybindings';
2020
import { IDisposable } from 'vs/base/common/lifecycle';
2121
import 'vs/css!./dropdown';
22-
import { setupCustomHover } from 'vs/base/browser/ui/hover/updatableHoverWidget';
2322
import { getDefaultHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegateFactory';
23+
import { getBaseLayerHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate2';
2424

2525
export interface IKeybindingProvider {
2626
(action: IAction): ResolvedKeybinding | undefined;
@@ -93,7 +93,7 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem {
9393
this.element.setAttribute('aria-haspopup', 'true');
9494
this.element.setAttribute('aria-expanded', 'false');
9595
if (this._action.label) {
96-
this._register(setupCustomHover(this.options.hoverDelegate ?? getDefaultHoverDelegate('mouse'), this.element, this._action.label));
96+
this._register(getBaseLayerHoverDelegate().setupUpdatableHover(this.options.hoverDelegate ?? getDefaultHoverDelegate('mouse'), this.element, this._action.label));
9797
}
9898
this.element.ariaLabel = this._action.label || '';
9999

src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as dom from 'vs/base/browser/dom';
7+
import type { IUpdatableHover } from 'vs/base/browser/ui/hover/hover';
78
import { IHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate';
9+
import { getBaseLayerHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegate2';
810
import { getDefaultHoverDelegate } from 'vs/base/browser/ui/hover/hoverDelegateFactory';
9-
import { ICustomHover, setupCustomHover } from 'vs/base/browser/ui/hover/updatableHoverWidget';
1011
import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels';
1112
import { Disposable } from 'vs/base/common/lifecycle';
1213
import * as objects from 'vs/base/common/objects';
@@ -42,7 +43,7 @@ export class HighlightedLabel extends Disposable {
4243
private highlights: readonly IHighlight[] = [];
4344
private supportIcons: boolean;
4445
private didEverRender: boolean = false;
45-
private customHover: ICustomHover | undefined;
46+
private customHover: IUpdatableHover | undefined;
4647

4748
/**
4849
* Create a new {@link HighlightedLabel}.
@@ -140,7 +141,7 @@ export class HighlightedLabel extends Disposable {
140141
} else {
141142
if (!this.customHover && this.title !== '') {
142143
const hoverDelegate = this.options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');
143-
this.customHover = this._register(setupCustomHover(hoverDelegate, this.domNode, this.title));
144+
this.customHover = this._register(getBaseLayerHoverDelegate().setupUpdatableHover(hoverDelegate, this.domNode, this.title));
144145
} else if (this.customHover) {
145146
this.customHover.update(this.title);
146147
}

0 commit comments

Comments
 (0)