Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf - do not use class for Codicon #171234

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/vs/base/browser/ui/codicons/codiconStyles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import { Codicon } from 'vs/base/common/codicons';
import { ICodicon } from 'vs/base/common/codicons';
import 'vs/css!./codicon/codicon';
import 'vs/css!./codicon/codicon-modifiers';

export function formatRule(c: Codicon) {
return `.codicon-${c.id}:before { content: '${c.fontCharacter}'; }`;
export function formatRule(c: ICodicon) {
return `.codicon-${c.id}:before { content: '${c.codiconFontCharacter}'; }`;
}
18 changes: 9 additions & 9 deletions src/vs/base/browser/ui/dialog/dialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { ButtonBar, ButtonWithDescription, IButtonStyles } from 'vs/base/browser
import { ICheckboxStyles, Checkbox } from 'vs/base/browser/ui/toggle/toggle';
import { IInputBoxStyles, InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
import { Action } from 'vs/base/common/actions';
import { Codicon } from 'vs/base/common/codicons';
import { Codicon, ICodicon } from 'vs/base/common/codicons';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { mnemonicButtonLabel } from 'vs/base/common/labels';
import { Disposable } from 'vs/base/common/lifecycle';
Expand All @@ -33,7 +33,7 @@ export interface IDialogOptions {
readonly inputs?: IDialogInputOptions[];
readonly keyEventProcessor?: (event: StandardKeyboardEvent) => void;
readonly renderBody?: (container: HTMLElement) => void;
readonly icon?: Codicon;
readonly icon?: ICodicon;
readonly buttonDetails?: string[];
readonly disableCloseAction?: boolean;
readonly disableDefaultAction?: boolean;
Expand Down Expand Up @@ -358,26 +358,26 @@ export class Dialog extends Disposable {

const spinModifierClassName = 'codicon-modifier-spin';

this.iconElement.classList.remove(...Codicon.dialogError.classNamesArray, ...Codicon.dialogWarning.classNamesArray, ...Codicon.dialogInfo.classNamesArray, ...Codicon.loading.classNamesArray, spinModifierClassName);
this.iconElement.classList.remove(...Codicon.classNamesArray(Codicon.dialogError), ...Codicon.classNamesArray(Codicon.dialogWarning), ...Codicon.classNamesArray(Codicon.dialogInfo), ...Codicon.classNamesArray(Codicon.loading), spinModifierClassName);

if (this.options.icon) {
this.iconElement.classList.add(...this.options.icon.classNamesArray);
this.iconElement.classList.add(...Codicon.classNamesArray(this.options.icon));
} else {
switch (this.options.type) {
case 'error':
this.iconElement.classList.add(...Codicon.dialogError.classNamesArray);
this.iconElement.classList.add(...Codicon.classNamesArray(Codicon.dialogError));
break;
case 'warning':
this.iconElement.classList.add(...Codicon.dialogWarning.classNamesArray);
this.iconElement.classList.add(...Codicon.classNamesArray(Codicon.dialogWarning));
break;
case 'pending':
this.iconElement.classList.add(...Codicon.loading.classNamesArray, spinModifierClassName);
this.iconElement.classList.add(...Codicon.classNamesArray(Codicon.loading), spinModifierClassName);
break;
case 'none':
case 'info':
case 'question':
default:
this.iconElement.classList.add(...Codicon.dialogInfo.classNamesArray);
this.iconElement.classList.add(...Codicon.classNamesArray(Codicon.dialogInfo));
break;
}
}
Expand All @@ -386,7 +386,7 @@ export class Dialog extends Disposable {
if (!this.options.disableCloseAction) {
const actionBar = this._register(new ActionBar(this.toolbarContainer, {}));

const action = this._register(new Action('dialog.close', nls.localize('dialogClose', "Close Dialog"), Codicon.dialogClose.classNames, true, async () => {
const action = this._register(new Action('dialog.close', nls.localize('dialogClose', "Close Dialog"), Codicon.classNames(Codicon.dialogClose), true, async () => {
resolve({
button: this.options.cancelId || 0,
checkboxChecked: this.checkbox ? this.checkbox.checked : undefined
Expand Down
2 changes: 1 addition & 1 deletion src/vs/base/browser/ui/dropdown/dropdownActionViewItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ export class ActionWithDropdownActionViewItem extends ActionViewItem {
separator.classList.toggle('prominent', menuActionClassNames.includes('prominent'));
append(this.element, separator);

this.dropdownMenuActionViewItem = new DropdownMenuActionViewItem(this._register(new Action('dropdownAction', nls.localize('moreActions', "More Actions..."))), menuActionsProvider, this.contextMenuProvider, { classNames: ['dropdown', ...Codicon.dropDownButton.classNamesArray, ...menuActionClassNames] });
this.dropdownMenuActionViewItem = new DropdownMenuActionViewItem(this._register(new Action('dropdownAction', nls.localize('moreActions', "More Actions..."))), menuActionsProvider, this.contextMenuProvider, { classNames: ['dropdown', ...Codicon.classNamesArray(Codicon.dropDownButton), ...menuActionClassNames] });
this.dropdownMenuActionViewItem.render(this.element);

this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => {
Expand Down
4 changes: 2 additions & 2 deletions src/vs/base/browser/ui/menu/menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ class BaseMenuActionViewItem extends BaseActionViewItem {
}
}

this.check = append(this.item, $('span.menu-item-check' + Codicon.menuSelection.cssSelector));
this.check = append(this.item, $('span.menu-item-check' + Codicon.cssSelector(Codicon.menuSelection)));
this.check.setAttribute('role', 'none');

this.label = append(this.item, $('span.action-label'));
Expand Down Expand Up @@ -756,7 +756,7 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem {
this.item.tabIndex = 0;
this.item.setAttribute('aria-haspopup', 'true');
this.updateAriaExpanded('false');
this.submenuIndicator = append(this.item, $('span.submenu-indicator' + Codicon.menuSubmenu.cssSelector));
this.submenuIndicator = append(this.item, $('span.submenu-indicator' + Codicon.cssSelector(Codicon.menuSubmenu)));
this.submenuIndicator.setAttribute('aria-hidden', 'true');
}

Expand Down
2 changes: 1 addition & 1 deletion src/vs/base/browser/ui/menu/menubar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ export class MenuBar extends Disposable {
createOverflowMenu(): void {
const label = this.isCompact ? nls.localize('mAppMenu', 'Application Menu') : nls.localize('mMore', 'More');
const buttonElement = $('div.menubar-menu-button', { 'role': 'menuitem', 'tabindex': this.isCompact ? 0 : -1, 'aria-label': label, 'aria-haspopup': true });
const titleElement = $('div.menubar-menu-title.toolbar-toggle-more' + Codicon.menuBarMore.cssSelector, { 'role': 'none', 'aria-hidden': true });
const titleElement = $('div.menubar-menu-title.toolbar-toggle-more' + Codicon.cssSelector(Codicon.menuBarMore), { 'role': 'none', 'aria-hidden': true });

buttonElement.appendChild(titleElement);
this.container.appendChild(buttonElement);
Expand Down
6 changes: 3 additions & 3 deletions src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { GlobalPointerMoveMonitor } from 'vs/base/browser/globalPointerMoveMonitor';
import { Widget } from 'vs/base/browser/ui/widget';
import { IntervalTimer, TimeoutTimer } from 'vs/base/common/async';
import { Codicon } from 'vs/base/common/codicons';
import { Codicon, ICodicon } from 'vs/base/common/codicons';
import * as dom from 'vs/base/browser/dom';

/**
Expand All @@ -17,7 +17,7 @@ export const ARROW_IMG_SIZE = 11;
export interface ScrollbarArrowOptions {
onActivate: () => void;
className: string;
icon: Codicon;
icon: ICodicon;

bgWidth: number;
bgHeight: number;
Expand Down Expand Up @@ -61,7 +61,7 @@ export class ScrollbarArrow extends Widget {

this.domNode = document.createElement('div');
this.domNode.className = opts.className;
this.domNode.classList.add(...opts.icon.classNamesArray);
this.domNode.classList.add(...Codicon.classNamesArray(opts.icon));

this.domNode.style.position = 'absolute';
this.domNode.style.width = ARROW_IMG_SIZE + 'px';
Expand Down
4 changes: 2 additions & 2 deletions src/vs/base/browser/ui/tree/abstractTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ class TreeRenderer<T, TFilterData, TRef, TTemplateData> implements IListRenderer
templateData.container.removeAttribute('aria-expanded');
}

templateData.twistie.classList.remove(...Codicon.treeItemExpanded.classNamesArray);
templateData.twistie.classList.remove(...Codicon.classNamesArray(Codicon.treeItemExpanded));

let twistieRendered = false;

Expand All @@ -465,7 +465,7 @@ class TreeRenderer<T, TFilterData, TRef, TTemplateData> implements IListRenderer

if (node.collapsible && (!this.hideTwistiesOfChildlessElements || node.visibleChildrenCount > 0)) {
if (!twistieRendered) {
templateData.twistie.classList.add(...Codicon.treeItemExpanded.classNamesArray);
templateData.twistie.classList.add(...Codicon.classNamesArray(Codicon.treeItemExpanded));
}

templateData.twistie.classList.add('collapsible');
Expand Down
8 changes: 4 additions & 4 deletions src/vs/base/browser/ui/tree/asyncDataTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,10 @@ class AsyncDataTreeRenderer<TInput, T, TFilterData, TTemplateData> implements IT

renderTwistie(element: IAsyncDataTreeNode<TInput, T>, twistieElement: HTMLElement): boolean {
if (element.slow) {
twistieElement.classList.add(...Codicon.treeItemLoading.classNamesArray);
twistieElement.classList.add(...Codicon.classNamesArray(Codicon.treeItemLoading));
return true;
} else {
twistieElement.classList.remove(...Codicon.treeItemLoading.classNamesArray);
twistieElement.classList.remove(...Codicon.classNamesArray(Codicon.treeItemLoading));
return false;
}
}
Expand Down Expand Up @@ -1105,10 +1105,10 @@ class CompressibleAsyncDataTreeRenderer<TInput, T, TFilterData, TTemplateData> i

renderTwistie(element: IAsyncDataTreeNode<TInput, T>, twistieElement: HTMLElement): boolean {
if (element.slow) {
twistieElement.classList.add(...Codicon.treeItemLoading.classNamesArray);
twistieElement.classList.add(...Codicon.classNamesArray(Codicon.treeItemLoading));
return true;
} else {
twistieElement.classList.remove(...Codicon.treeItemLoading.classNamesArray);
twistieElement.classList.remove(...Codicon.classNamesArray(Codicon.treeItemLoading));
return false;
}
}
Expand Down