Skip to content

Commit dc269a9

Browse files
committed
set styles in batch
1 parent 2561955 commit dc269a9

5 files changed

Lines changed: 24 additions & 20 deletions

File tree

src/vs/base/browser/ui/codicons/codicon/codicon.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
@font-face {
77
font-family: "codicon";
8-
src: url("./codicon.ttf?b72c513f65e30cf5c3607d5a7971b6a9") format("truetype");
8+
src: url("./codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6") format("truetype");
99
}
1010

1111
.codicon[class*='codicon-'] {
@@ -20,3 +20,5 @@
2020
-webkit-user-select: none;
2121
-ms-user-select: none;
2222
}
23+
24+
/* icon rules are dynamically created in codiconStyles */

src/vs/base/browser/ui/codicons/codicons.ts renamed to src/vs/base/browser/ui/codicons/codiconStyles.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,32 @@ import 'vs/css!./codicon/codicon-modifications';
88
import 'vs/css!./codicon/codicon-animations';
99

1010
import { Codicon, iconRegistry } from 'vs/base/common/codicons';
11-
import { createCSSRule, createStyleSheet } from 'vs/base/browser/dom';
12-
13-
let codiconStyleSheet: undefined | HTMLStyleElement;
14-
15-
function getOrCreateStyleSheet(): HTMLStyleElement {
16-
if (!codiconStyleSheet) {
17-
codiconStyleSheet = createStyleSheet();
18-
codiconStyleSheet.className = 'codiconStyleSheet';
19-
}
20-
return codiconStyleSheet;
21-
}
11+
import { createStyleSheet } from 'vs/base/browser/dom';
12+
import { RunOnceScheduler } from 'vs/base/common/async';
2213

2314
function initialize() {
24-
for (let c of iconRegistry.all) {
25-
register(c);
15+
let codiconStyleSheet = createStyleSheet();
16+
codiconStyleSheet.id = 'codiconStyles';
17+
18+
function updateAll() {
19+
const rules = [];
20+
for (let c of iconRegistry.all) {
21+
rules.push(formatRule(c));
22+
}
23+
codiconStyleSheet.innerHTML = rules.join('\n');
2624
}
27-
iconRegistry.onDidRegister(register);
28-
}
2925

26+
const delayer = new RunOnceScheduler(updateAll, 0);
27+
iconRegistry.onDidRegister(() => delayer.schedule());
28+
delayer.schedule();
29+
}
3030

31-
function register(c: Codicon) {
31+
function formatRule(c: Codicon) {
3232
let def = c.definition;
3333
while (def instanceof Codicon) {
3434
def = def.definition;
3535
}
36-
createCSSRule(`.codicon-${c.id}:before`, `content: '${def.character}'`, getOrCreateStyleSheet());
36+
return `.codicon-${c.id}:before { content: '${def.character}'; }`;
3737
}
3838

3939
initialize();

src/vs/code/electron-browser/issue/issueReporterMain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import * as os from 'os';
88
import * as browser from 'vs/base/browser/browser';
99
import { $ } from 'vs/base/browser/dom';
1010
import { Button } from 'vs/base/browser/ui/button/button';
11-
import 'vs/base/browser/ui/codicons/codicons'; // make sure codicon css is loaded
11+
import 'vs/base/browser/ui/codicons/codiconStyles'; // make sure codicon css is loaded
1212
import { CodiconLabel } from 'vs/base/browser/ui/codicons/codiconLabel';
1313
import * as collections from 'vs/base/common/collections';
1414
import { debounce } from 'vs/base/common/decorators';

src/vs/editor/contrib/suggest/suggestWidget.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import 'vs/css!./media/suggest';
77
import 'vs/css!./media/suggestStatusBar';
8-
import 'vs/base/browser/ui/codicons/codicons'; // The codicon symbol styles are defined here and must be loaded
8+
import 'vs/base/browser/ui/codicons/codiconStyles'; // The codicon symbol styles are defined here and must be loaded
99
import 'vs/editor/contrib/documentSymbols/outlineTree'; // The codicon symbol colors are defined here and must be loaded
1010
import * as nls from 'vs/nls';
1111
import { createMatches } from 'vs/base/common/filters';

src/vs/editor/editor.all.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,5 @@ import 'vs/editor/contrib/wordPartOperations/wordPartOperations';
4848
// Load up these strings even in VSCode, even if they are not used
4949
// in order to get them translated
5050
import 'vs/editor/common/standaloneStrings';
51+
52+
import 'vs/base/browser/ui/codicons/codiconStyles'; // The codicons are defined here and must be loaded

0 commit comments

Comments
 (0)