Skip to content

Commit 35c44ee

Browse files
committed
Aux window: reduce $window usage (#195888)
1 parent ea076f5 commit 35c44ee

File tree

7 files changed

+30
-30
lines changed

7 files changed

+30
-30
lines changed

src/vs/base/browser/browser.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { $window, CodeWindow } from 'vs/base/browser/window';
6+
import { $window, CodeWindow, mainWindow } from 'vs/base/browser/window';
77
import { Emitter, Event } from 'vs/base/common/event';
88
import { Disposable, markAsSingleton } from 'vs/base/common/lifecycle';
99

@@ -158,9 +158,9 @@ class PixelRatioFacade {
158158
}
159159
}
160160

161-
export function addMatchMediaChangeListener(query: string | MediaQueryList, callback: (this: MediaQueryList, ev: MediaQueryListEvent) => any): void {
161+
export function addMatchMediaChangeListener(targetWindow: Window, query: string | MediaQueryList, callback: (this: MediaQueryList, ev: MediaQueryListEvent) => any): void {
162162
if (typeof query === 'string') {
163-
query = $window.matchMedia(query);
163+
query = targetWindow.matchMedia(query);
164164
}
165165
query.addEventListener('change', callback);
166166
}
@@ -210,11 +210,11 @@ export const isElectron = (userAgent.indexOf('Electron/') >= 0);
210210
export const isAndroid = (userAgent.indexOf('Android') >= 0);
211211

212212
let standalone = false;
213-
if ($window.matchMedia) {
214-
const standaloneMatchMedia = $window.matchMedia('(display-mode: standalone) or (display-mode: window-controls-overlay)');
215-
const fullScreenMatchMedia = $window.matchMedia('(display-mode: fullscreen)');
213+
if (typeof mainWindow.matchMedia === 'function') {
214+
const standaloneMatchMedia = mainWindow.matchMedia('(display-mode: standalone) or (display-mode: window-controls-overlay)');
215+
const fullScreenMatchMedia = mainWindow.matchMedia('(display-mode: fullscreen)');
216216
standalone = standaloneMatchMedia.matches;
217-
addMatchMediaChangeListener(standaloneMatchMedia, ({ matches }) => {
217+
addMatchMediaChangeListener(mainWindow, standaloneMatchMedia, ({ matches }) => {
218218
// entering fullscreen would change standaloneMatchMedia.matches to false
219219
// if standalone is true (running as PWA) and entering fullscreen, skip this change
220220
if (standalone && fullScreenMatchMedia.matches) {

src/vs/base/browser/dom.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ export let runAtThisOrScheduleAtNextAnimationFrame: (targetWindow: Window, runne
261261
*/
262262
export let scheduleAtNextAnimationFrame: (targetWindow: Window, runner: () => void, priority?: number) => IDisposable;
263263

264-
export function disposableWindowInterval(targetWindow: Window & typeof globalThis, handler: () => void | boolean /* stop interval */ | Promise<unknown>, interval: number, iterations?: number): IDisposable {
264+
export function disposableWindowInterval(targetWindow: Window, handler: () => void | boolean /* stop interval */ | Promise<unknown>, interval: number, iterations?: number): IDisposable {
265265
let iteration = 0;
266266
const timer = targetWindow.setInterval(() => {
267267
iteration++;

src/vs/editor/standalone/browser/standaloneThemeService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ export class StandaloneThemeService extends Disposable implements IStandaloneThe
261261
this._updateCSS();
262262
}));
263263

264-
addMatchMediaChangeListener('(forced-colors: active)', () => {
264+
addMatchMediaChangeListener(mainWindow, '(forced-colors: active)', () => {
265265
this._onOSSchemeChanged();
266266
});
267267
}

src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { getWindow } from 'vs/base/browser/dom';
67
import { renderMarkdownAsPlaintext } from 'vs/base/browser/markdownRenderer';
78
import * as aria from 'vs/base/browser/ui/aria/aria';
89
import { Barrier, Queue, raceCancellation, raceCancellationError } from 'vs/base/common/async';
@@ -773,9 +774,9 @@ export class InlineChatController implements IEditorContribution {
773774
this._ignoreModelContentChanged = true;
774775
this._activeSession.wholeRange.trackEdits(editOperations);
775776
if (opts) {
776-
await this._strategy.makeProgressiveChanges(editOperations, opts);
777+
await this._strategy.makeProgressiveChanges(getWindow(this._editor.getContainerDomNode()), editOperations, opts);
777778
} else {
778-
await this._strategy.makeChanges(editOperations);
779+
await this._strategy.makeChanges(getWindow(this._editor.getContainerDomNode()), editOperations);
779780
}
780781
this._ctxDidEdit.set(this._activeSession.hasChangedText);
781782
} finally {

src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { disposableWindowInterval } from 'vs/base/browser/dom';
7-
import { $window } from 'vs/base/browser/window';
87
import { IAction, toAction } from 'vs/base/common/actions';
98
import { coalesceInPlace, equals, tail } from 'vs/base/common/arrays';
109
import { AsyncIterableObject, AsyncIterableSource } from 'vs/base/common/async';
@@ -77,9 +76,9 @@ export abstract class EditModeStrategy {
7776

7877
abstract cancel(): Promise<void>;
7978

80-
abstract makeProgressiveChanges(edits: ISingleEditOperation[], timings: ProgressingEditsOptions): Promise<void>;
79+
abstract makeProgressiveChanges(targetWindow: Window, edits: ISingleEditOperation[], timings: ProgressingEditsOptions): Promise<void>;
8180

82-
abstract makeChanges(edits: ISingleEditOperation[]): Promise<void>;
81+
abstract makeChanges(targetWindow: Window, edits: ISingleEditOperation[]): Promise<void>;
8382

8483
abstract undoChanges(altVersionId: number): Promise<void>;
8584

@@ -151,7 +150,7 @@ export class PreviewStrategy extends EditModeStrategy {
151150
// nothing to do
152151
}
153152

154-
override async makeChanges(_edits: ISingleEditOperation[]): Promise<void> {
153+
override async makeChanges(_targetWindow: Window, _edits: ISingleEditOperation[]): Promise<void> {
155154
// nothing to do
156155
}
157156

@@ -244,7 +243,7 @@ export class LivePreviewStrategy extends EditModeStrategy {
244243
const targetAltVersion = textModelNSnapshotAltVersion ?? textModelNAltVersion;
245244
await undoModelUntil(modelN, targetAltVersion);
246245
}
247-
override async makeChanges(edits: ISingleEditOperation[]): Promise<void> {
246+
override async makeChanges(_targetWindow: Window, edits: ISingleEditOperation[]): Promise<void> {
248247
const cursorStateComputerAndInlineDiffCollection: ICursorStateComputer = (undoEdits) => {
249248
let last: Position | null = null;
250249
for (const edit of undoEdits) {
@@ -266,7 +265,7 @@ export class LivePreviewStrategy extends EditModeStrategy {
266265
await this._updateDiffZones();
267266
}
268267

269-
override async makeProgressiveChanges(edits: ISingleEditOperation[], opts: ProgressingEditsOptions): Promise<void> {
268+
override async makeProgressiveChanges(targetWindow: Window, edits: ISingleEditOperation[], opts: ProgressingEditsOptions): Promise<void> {
270269

271270
// push undo stop before first edit
272271
if (++this._editCount === 1) {
@@ -285,7 +284,7 @@ export class LivePreviewStrategy extends EditModeStrategy {
285284
const wordCount = countWords(edit.text ?? '');
286285
const speed = wordCount / durationInSec;
287286
// console.log({ durationInSec, wordCount, speed: wordCount / durationInSec });
288-
await performAsyncTextEdit(this._session.textModelN, asProgressiveEdit(edit, speed, opts.token));
287+
await performAsyncTextEdit(this._session.textModelN, asProgressiveEdit(targetWindow, edit, speed, opts.token));
289288
}
290289

291290
await renderTask;
@@ -444,15 +443,15 @@ export function asAsyncEdit(edit: IIdentifiedSingleEditOperation): AsyncTextEdit
444443
} satisfies AsyncTextEdit;
445444
}
446445

447-
export function asProgressiveEdit(edit: IIdentifiedSingleEditOperation, wordsPerSec: number, token: CancellationToken): AsyncTextEdit {
446+
export function asProgressiveEdit(targetWindow: Window, edit: IIdentifiedSingleEditOperation, wordsPerSec: number, token: CancellationToken): AsyncTextEdit {
448447

449448
wordsPerSec = Math.max(10, wordsPerSec);
450449

451450
const stream = new AsyncIterableSource<string>();
452451
let newText = edit.text ?? '';
453452
// const wordCount = countWords(newText);
454453

455-
const handle = disposableWindowInterval($window, () => {
454+
const handle = disposableWindowInterval(targetWindow, () => {
456455

457456
const r = getNWords(newText, 1);
458457
stream.emitOne(r.value);
@@ -584,15 +583,15 @@ export class LiveStrategy extends EditModeStrategy {
584583
await undoModelUntil(textModelN, altVersionId);
585584
}
586585

587-
override async makeChanges(edits: ISingleEditOperation[]): Promise<void> {
588-
return this._makeChanges(edits, undefined);
586+
override async makeChanges(targetWindow: Window, edits: ISingleEditOperation[]): Promise<void> {
587+
return this._makeChanges(targetWindow, edits, undefined);
589588
}
590589

591-
override async makeProgressiveChanges(edits: ISingleEditOperation[], opts: ProgressingEditsOptions): Promise<void> {
592-
return this._makeChanges(edits, opts);
590+
override async makeProgressiveChanges(targetWindow: Window, edits: ISingleEditOperation[], opts: ProgressingEditsOptions): Promise<void> {
591+
return this._makeChanges(targetWindow, edits, opts);
593592
}
594593

595-
private async _makeChanges(edits: ISingleEditOperation[], opts: ProgressingEditsOptions | undefined): Promise<void> {
594+
private async _makeChanges(targetWindow: Window, edits: ISingleEditOperation[], opts: ProgressingEditsOptions | undefined): Promise<void> {
596595

597596
// push undo stop before first edit
598597
if (++this._editCount === 1) {
@@ -625,7 +624,7 @@ export class LiveStrategy extends EditModeStrategy {
625624
const wordCount = countWords(edit.text ?? '');
626625
const speed = wordCount / durationInSec;
627626
// console.log({ durationInSec, wordCount, speed: wordCount / durationInSec });
628-
await performAsyncTextEdit(this._session.textModelN, asProgressiveEdit(edit, speed, opts.token), progress);
627+
await performAsyncTextEdit(this._session.textModelN, asProgressiveEdit(targetWindow, edit, speed, opts.token), progress);
629628
}
630629

631630
} else {

src/vs/workbench/contrib/notebook/browser/view/cellParts/chat/cellChatController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { Dimension, h } from 'vs/base/browser/dom';
6+
import { Dimension, getWindow, h } from 'vs/base/browser/dom';
77
import { CancelablePromise, Queue, createCancelablePromise, raceCancellationError } from 'vs/base/common/async';
88
import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cancellation';
99
import { Event } from 'vs/base/common/event';
@@ -468,7 +468,7 @@ class EditStrategy {
468468
const wordCount = countWords(edit.text ?? '');
469469
const speed = wordCount / durationInSec;
470470
// console.log({ durationInSec, wordCount, speed: wordCount / durationInSec });
471-
await performAsyncTextEdit(editor.getModel(), asProgressiveEdit(edit, speed, opts.token));
471+
await performAsyncTextEdit(editor.getModel(), asProgressiveEdit(getWindow(editor.getContainerDomNode()), edit, speed, opts.token));
472472
}
473473
}
474474

src/vs/workbench/services/themes/browser/browserHostColorSchemeService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ export class BrowserHostColorSchemeService extends Disposable implements IHostCo
2525

2626
private registerListeners(): void {
2727

28-
addMatchMediaChangeListener('(prefers-color-scheme: dark)', () => {
28+
addMatchMediaChangeListener(mainWindow, '(prefers-color-scheme: dark)', () => {
2929
this._onDidSchemeChangeEvent.fire();
3030
});
31-
addMatchMediaChangeListener('(forced-colors: active)', () => {
31+
addMatchMediaChangeListener(mainWindow, '(forced-colors: active)', () => {
3232
this._onDidSchemeChangeEvent.fire();
3333
});
3434
}

0 commit comments

Comments
 (0)