@theia/core 1.70.0-next.7 → 1.70.0-next.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/lib/browser/about-dialog.d.ts.map +1 -1
- package/lib/browser/about-dialog.js +3 -1
- package/lib/browser/about-dialog.js.map +1 -1
- package/lib/browser/catalog.json +83 -7
- package/lib/browser/common-frontend-contribution.d.ts +0 -2
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +39 -15
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +1 -0
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/hover-service.d.ts.map +1 -1
- package/lib/browser/hover-service.js +5 -3
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +9 -1
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/quick-input/quick-input-service.spec.js +53 -9
- package/lib/browser/quick-input/quick-input-service.spec.js.map +1 -1
- package/lib/browser/saveable-service.d.ts +24 -1
- package/lib/browser/saveable-service.d.ts.map +1 -1
- package/lib/browser/saveable-service.js +34 -3
- package/lib/browser/saveable-service.js.map +1 -1
- package/lib/browser/tree/fuzzy-search.d.ts +1 -60
- package/lib/browser/tree/fuzzy-search.d.ts.map +1 -1
- package/lib/browser/tree/fuzzy-search.js +3 -58
- package/lib/browser/tree/fuzzy-search.js.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.js +1 -2
- package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
- package/lib/browser/widgets/select-component.d.ts +1 -0
- package/lib/browser/widgets/select-component.d.ts.map +1 -1
- package/lib/browser/widgets/select-component.js +30 -0
- package/lib/browser/widgets/select-component.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +2 -1
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +5 -1
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/test/mock-window-service.d.ts +2 -1
- package/lib/browser/window/test/mock-window-service.d.ts.map +1 -1
- package/lib/browser/window/test/mock-window-service.js +2 -1
- package/lib/browser/window/test/mock-window-service.js.map +1 -1
- package/lib/browser/window/window-service.d.ts +8 -1
- package/lib/browser/window/window-service.d.ts.map +1 -1
- package/lib/common/fuzzy-match-utils.d.ts +27 -0
- package/lib/common/fuzzy-match-utils.d.ts.map +1 -0
- package/lib/common/fuzzy-match-utils.js +96 -0
- package/lib/common/fuzzy-match-utils.js.map +1 -0
- package/lib/common/fuzzy-match-utils.spec.d.ts +2 -0
- package/lib/common/fuzzy-match-utils.spec.d.ts.map +1 -0
- package/lib/common/fuzzy-match-utils.spec.js +109 -0
- package/lib/common/fuzzy-match-utils.spec.js.map +1 -0
- package/lib/common/fuzzy-search.d.ts +63 -0
- package/lib/common/fuzzy-search.d.ts.map +1 -0
- package/lib/common/fuzzy-search.js +101 -0
- package/lib/common/fuzzy-search.js.map +1 -0
- package/lib/common/fuzzy-search.spec.d.ts.map +1 -0
- package/lib/{browser/tree → common}/fuzzy-search.spec.js +20 -1
- package/lib/common/fuzzy-search.spec.js.map +1 -0
- package/lib/common/logger-sanitizer.d.ts +9 -0
- package/lib/common/logger-sanitizer.d.ts.map +1 -1
- package/lib/common/logger-sanitizer.js +26 -3
- package/lib/common/logger-sanitizer.js.map +1 -1
- package/lib/common/logger-sanitizer.spec.js +41 -0
- package/lib/common/logger-sanitizer.spec.js.map +1 -1
- package/lib/common/preferences/injectable-preference-proxy.d.ts +5 -3
- package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -1
- package/lib/common/preferences/injectable-preference-proxy.js +9 -6
- package/lib/common/preferences/injectable-preference-proxy.js.map +1 -1
- package/lib/common/preferences/preference-configurations.d.ts +2 -2
- package/lib/common/preferences/preference-configurations.d.ts.map +1 -1
- package/lib/common/preferences/preference-configurations.js +1 -1
- package/lib/common/preferences/preference-configurations.js.map +1 -1
- package/lib/common/preferences/preference-provider-impl.d.ts +4 -3
- package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -1
- package/lib/common/preferences/preference-provider-impl.js +9 -6
- package/lib/common/preferences/preference-provider-impl.js.map +1 -1
- package/lib/common/preferences/preference-proxy.d.ts +4 -2
- package/lib/common/preferences/preference-proxy.d.ts.map +1 -1
- package/lib/common/preferences/preference-proxy.js +4 -5
- package/lib/common/preferences/preference-proxy.js.map +1 -1
- package/lib/common/preferences/preference-service.d.ts +4 -3
- package/lib/common/preferences/preference-service.d.ts.map +1 -1
- package/lib/common/preferences/preference-service.js +13 -10
- package/lib/common/preferences/preference-service.js.map +1 -1
- package/lib/common/quick-pick-service.d.ts +18 -2
- package/lib/common/quick-pick-service.d.ts.map +1 -1
- package/lib/common/quick-pick-service.js +53 -8
- package/lib/common/quick-pick-service.js.map +1 -1
- package/lib/common/uri.js +1 -1
- package/lib/common/uri.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +4 -6
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +3 -3
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts +2 -0
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js +5 -3
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -1
- package/lib/electron-browser/preload.js +2 -2
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.d.ts +4 -0
- package/lib/electron-browser/window/electron-secondary-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js +32 -0
- package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.d.ts +1 -0
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +4 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +3 -2
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +7 -4
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-browser/window/window-zoom-action-bar.d.ts +21 -0
- package/lib/electron-browser/window/window-zoom-action-bar.d.ts.map +1 -0
- package/lib/electron-browser/window/window-zoom-action-bar.js +71 -0
- package/lib/electron-browser/window/window-zoom-action-bar.js.map +1 -0
- package/lib/electron-browser/window/window-zoom-status-bar-item.d.ts +14 -0
- package/lib/electron-browser/window/window-zoom-status-bar-item.d.ts.map +1 -0
- package/lib/electron-browser/window/window-zoom-status-bar-item.js +87 -0
- package/lib/electron-browser/window/window-zoom-status-bar-item.js.map +1 -0
- package/lib/electron-common/electron-api.d.ts +1 -1
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-main-window-service.d.ts +2 -1
- package/lib/electron-common/electron-main-window-service.d.ts.map +1 -1
- package/lib/electron-common/electron-window-preferences.d.ts +5 -2
- package/lib/electron-common/electron-window-preferences.d.ts.map +1 -1
- package/lib/electron-common/electron-window-preferences.js +16 -10
- package/lib/electron-common/electron-window-preferences.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +14 -2
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +1 -0
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +6 -0
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/electron-main-window-service-impl.d.ts +2 -1
- package/lib/electron-main/electron-main-window-service-impl.d.ts.map +1 -1
- package/lib/electron-main/electron-main-window-service-impl.js +6 -2
- package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/about-dialog.tsx +3 -1
- package/src/browser/common-frontend-contribution.ts +36 -17
- package/src/browser/frontend-application-module.ts +2 -1
- package/src/browser/hover-service.ts +5 -3
- package/src/browser/markdown-rendering/markdown-renderer.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +9 -1
- package/src/browser/quick-input/quick-input-service.spec.ts +58 -9
- package/src/browser/saveable-service.ts +56 -4
- package/src/browser/style/hover-service.css +1 -0
- package/src/browser/style/index.css +1 -1
- package/src/browser/tree/fuzzy-search.ts +2 -120
- package/src/browser/tree/tree-view-welcome-widget.tsx +1 -2
- package/src/browser/widgets/select-component.tsx +39 -2
- package/src/browser/window/default-window-service.ts +6 -1
- package/src/browser/window/test/mock-window-service.ts +2 -1
- package/src/browser/window/window-service.ts +9 -1
- package/src/common/fuzzy-match-utils.spec.ts +141 -0
- package/src/common/fuzzy-match-utils.ts +78 -0
- package/src/{browser/tree → common}/fuzzy-search.spec.ts +23 -1
- package/src/common/fuzzy-search.ts +158 -0
- package/src/common/i18n/nls.metadata.json +25379 -24577
- package/src/common/logger-sanitizer.spec.ts +54 -1
- package/src/common/logger-sanitizer.ts +38 -3
- package/src/common/preferences/injectable-preference-proxy.ts +6 -3
- package/src/common/preferences/preference-configurations.ts +2 -2
- package/src/common/preferences/preference-provider-impl.ts +6 -3
- package/src/common/preferences/preference-proxy.ts +6 -4
- package/src/common/preferences/preference-service.ts +6 -3
- package/src/common/quick-pick-service.ts +65 -11
- package/src/common/uri.ts +1 -1
- package/src/electron-browser/menu/electron-main-menu-factory.ts +4 -6
- package/src/electron-browser/menu/electron-menu-contribution.ts +4 -4
- package/src/electron-browser/messaging/electron-local-ws-connection-source.ts +4 -2
- package/src/electron-browser/preload.ts +2 -2
- package/src/electron-browser/style/window-zoom-action-bar.css +57 -0
- package/src/electron-browser/window/electron-secondary-window-service.ts +32 -1
- package/src/electron-browser/window/electron-window-module.ts +4 -0
- package/src/electron-browser/window/electron-window-service.ts +10 -7
- package/src/electron-browser/window/window-zoom-action-bar.tsx +115 -0
- package/src/electron-browser/window/window-zoom-status-bar-item.ts +81 -0
- package/src/electron-common/electron-api.ts +1 -1
- package/src/electron-common/electron-main-window-service.ts +2 -1
- package/src/electron-common/electron-window-preferences.ts +19 -11
- package/src/electron-main/electron-api-main.ts +12 -2
- package/src/electron-main/electron-main-application.ts +7 -0
- package/src/electron-main/electron-main-window-service-impl.ts +7 -2
- package/lib/browser/tree/fuzzy-search.spec.d.ts.map +0 -1
- package/lib/browser/tree/fuzzy-search.spec.js.map +0 -1
- /package/lib/{browser/tree → common}/fuzzy-search.spec.d.ts +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
import { createRoot } from 'react-dom/client';
|
|
17
|
+
import * as React from '../../../shared/react';
|
|
18
|
+
import { ACTION_ITEM, codicon, CommonCommands, KeybindingRegistry } from '../../browser';
|
|
19
|
+
import { Command, CommandRegistry, nls } from '../../common';
|
|
20
|
+
import { PREF_WINDOW_ZOOM_LEVEL, ZoomLevel } from '../../electron-common/electron-window-preferences';
|
|
21
|
+
import { ElectronCommands } from '../menu/electron-menu-contribution';
|
|
22
|
+
|
|
23
|
+
export interface WindowZoomActionBarProps {
|
|
24
|
+
container: HTMLElement
|
|
25
|
+
zoomLevel: number;
|
|
26
|
+
commandRegistry: CommandRegistry;
|
|
27
|
+
keybindingRegistry: KeybindingRegistry;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export class WindowZoomActionBar extends React.Component<WindowZoomActionBarProps> {
|
|
31
|
+
|
|
32
|
+
protected getTitleWithKeybinding(command: Command): string {
|
|
33
|
+
const bindings = this.props.keybindingRegistry.getKeybindingsForCommand(command.id);
|
|
34
|
+
// Only consider the first active keybinding.
|
|
35
|
+
if (bindings.length) {
|
|
36
|
+
const binding = bindings.find(b => this.props.keybindingRegistry.isEnabledInScope(b, this.props.container));
|
|
37
|
+
if (binding) {
|
|
38
|
+
const accelerator = this.props.keybindingRegistry.acceleratorFor(binding, '+', true);
|
|
39
|
+
return `${command.label} (${accelerator})`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return command.label!;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
protected renderActionButton(command: Command, iconName?: string, commandArgs: unknown[] = []): React.ReactNode {
|
|
46
|
+
return (
|
|
47
|
+
<div
|
|
48
|
+
className={`${ACTION_ITEM} window-zoom-button`}
|
|
49
|
+
role='button'
|
|
50
|
+
tabIndex={0}
|
|
51
|
+
aria-label={command.label}
|
|
52
|
+
title={this.getTitleWithKeybinding(command)}
|
|
53
|
+
onClick={() => this.props.commandRegistry.executeCommand(command.id, ...commandArgs)}
|
|
54
|
+
onKeyDown={e => {
|
|
55
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
this.props.commandRegistry.executeCommand(command.id, ...commandArgs);
|
|
58
|
+
}
|
|
59
|
+
}}
|
|
60
|
+
>
|
|
61
|
+
{iconName ? <div className={codicon(iconName)}></div> : <div>{command.label}</div>}
|
|
62
|
+
</div>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
protected renderZoomDisplay(): React.ReactNode {
|
|
67
|
+
const percentage = Math.round(100 * Math.pow(ZoomLevel.ZOOM_BASE, this.props.zoomLevel));
|
|
68
|
+
const zoomLevelText = nls.localizeByDefault('Zoom Level: {0} ({1}%)', this.props.zoomLevel.toString(), percentage.toString());
|
|
69
|
+
return (
|
|
70
|
+
<div
|
|
71
|
+
className='window-zoom-display'
|
|
72
|
+
role='status'
|
|
73
|
+
aria-live='polite'
|
|
74
|
+
aria-atomic='true'
|
|
75
|
+
aria-label={zoomLevelText}
|
|
76
|
+
title={zoomLevelText}
|
|
77
|
+
>
|
|
78
|
+
<div>{this.props.zoomLevel}</div>
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
override render(): React.ReactNode {
|
|
84
|
+
return (
|
|
85
|
+
<>
|
|
86
|
+
{this.renderActionButton(ElectronCommands.ZOOM_OUT, 'remove')}
|
|
87
|
+
{this.renderZoomDisplay()}
|
|
88
|
+
{this.renderActionButton(ElectronCommands.ZOOM_IN, 'plus')}
|
|
89
|
+
{this.renderActionButton(ElectronCommands.RESET_ZOOM)}
|
|
90
|
+
{this.renderActionButton(CommonCommands.OPEN_PREFERENCES, 'settings-gear', [PREF_WINDOW_ZOOM_LEVEL])}
|
|
91
|
+
</>
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Helper function to render the WindowZoomActionBar React component into a DOM container element.
|
|
98
|
+
* This function can be called from a TypeScript file without JSX.
|
|
99
|
+
*/
|
|
100
|
+
export function renderWindowZoomActionBar(
|
|
101
|
+
container: HTMLElement,
|
|
102
|
+
zoomLevel: number,
|
|
103
|
+
commandRegistry: CommandRegistry,
|
|
104
|
+
keybindingRegistry: KeybindingRegistry,
|
|
105
|
+
): void {
|
|
106
|
+
const root = createRoot(container);
|
|
107
|
+
root.render(
|
|
108
|
+
<WindowZoomActionBar
|
|
109
|
+
container={container}
|
|
110
|
+
zoomLevel={zoomLevel}
|
|
111
|
+
commandRegistry={commandRegistry}
|
|
112
|
+
keybindingRegistry={keybindingRegistry}
|
|
113
|
+
/>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { FrontendApplicationContribution, KeybindingRegistry, StatusBar, StatusBarAlignment } from '../../browser';
|
|
19
|
+
import { CommandRegistry, nls, PreferenceService } from '../../common';
|
|
20
|
+
import { PREF_WINDOW_ZOOM_LEVEL } from '../../electron-common/electron-window-preferences';
|
|
21
|
+
import { renderWindowZoomActionBar } from './window-zoom-action-bar';
|
|
22
|
+
|
|
23
|
+
@injectable()
|
|
24
|
+
export class WindowZoomStatusBarItem implements FrontendApplicationContribution {
|
|
25
|
+
|
|
26
|
+
static readonly ID = 'window-zoom-status';
|
|
27
|
+
|
|
28
|
+
@inject(StatusBar)
|
|
29
|
+
protected readonly statusBar: StatusBar;
|
|
30
|
+
|
|
31
|
+
@inject(PreferenceService)
|
|
32
|
+
protected readonly preferenceService: PreferenceService;
|
|
33
|
+
|
|
34
|
+
@inject(CommandRegistry)
|
|
35
|
+
protected readonly commandRegistry: CommandRegistry;
|
|
36
|
+
|
|
37
|
+
@inject(KeybindingRegistry)
|
|
38
|
+
protected readonly keybindingRegistry: KeybindingRegistry;
|
|
39
|
+
|
|
40
|
+
onStart(): void {
|
|
41
|
+
this.preferenceService.ready.then(() => {
|
|
42
|
+
this.updateZoomStatusBarItem();
|
|
43
|
+
|
|
44
|
+
this.preferenceService.onPreferenceChanged(e => {
|
|
45
|
+
if (e.preferenceName === PREF_WINDOW_ZOOM_LEVEL) {
|
|
46
|
+
this.updateZoomStatusBarItem();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected updateZoomStatusBarItem(): void {
|
|
53
|
+
const zoomLevel = this.getZoomLevel();
|
|
54
|
+
|
|
55
|
+
if (zoomLevel === 0) {
|
|
56
|
+
// Hide the status bar item when zoom is at default level
|
|
57
|
+
this.statusBar.removeElement(WindowZoomStatusBarItem.ID);
|
|
58
|
+
} else {
|
|
59
|
+
this.statusBar.setElement(WindowZoomStatusBarItem.ID, {
|
|
60
|
+
name: nls.localizeByDefault('Window Zoom'),
|
|
61
|
+
text: zoomLevel > 0 ? '$(codicon-zoom-in)' : '$(codicon-zoom-out)',
|
|
62
|
+
alignment: StatusBarAlignment.RIGHT,
|
|
63
|
+
priority: 110,
|
|
64
|
+
tooltip: () => this.createTooltip(zoomLevel),
|
|
65
|
+
backgroundColor: 'var(--theia-statusBarItem-prominentBackground)',
|
|
66
|
+
color: 'var(--theia-statusBarItem-prominentForeground)'
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
protected getZoomLevel(): number {
|
|
72
|
+
return this.preferenceService.get(PREF_WINDOW_ZOOM_LEVEL, 0);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
protected createTooltip(zoomLevel: number): HTMLElement {
|
|
76
|
+
const container = document.createElement('div');
|
|
77
|
+
container.className = 'window-zoom-action-bar';
|
|
78
|
+
renderWindowZoomActionBar(container, zoomLevel, this.commandRegistry, this.keybindingRegistry);
|
|
79
|
+
return container;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -85,7 +85,7 @@ export interface TheiaCoreAPI {
|
|
|
85
85
|
toggleDevTools(): void;
|
|
86
86
|
openDevToolsForWindow(windowName: string): void;
|
|
87
87
|
getZoomLevel(): Promise<number>;
|
|
88
|
-
setZoomLevel(desired: number): void;
|
|
88
|
+
setZoomLevel(desired: number, windowName?: string): void;
|
|
89
89
|
|
|
90
90
|
isFullScreenable(): boolean; // TODO: this should really be async, since it blocks the renderer process
|
|
91
91
|
isFullScreen(): boolean; // TODO: this should really be async, since it blocks the renderer process
|
|
@@ -20,5 +20,6 @@ export const electronMainWindowServicePath = '/services/electron-window';
|
|
|
20
20
|
export const ElectronMainWindowService = Symbol('ElectronMainWindowService');
|
|
21
21
|
export interface ElectronMainWindowService {
|
|
22
22
|
openNewWindow(url: string, options?: NewWindowOptions): undefined;
|
|
23
|
-
openNewDefaultWindow(params?: WindowSearchParams):
|
|
23
|
+
openNewDefaultWindow(params?: WindowSearchParams): Promise<number>;
|
|
24
|
+
closeWindow(windowId: number): void;
|
|
24
25
|
}
|
|
@@ -27,20 +27,28 @@ export namespace ZoomLevel {
|
|
|
27
27
|
export const MAX = 9;
|
|
28
28
|
// amount to increment or decrement the window zoom level.
|
|
29
29
|
export const VARIATION = 0.5;
|
|
30
|
+
// Chromium's base for zoom factor calculation: zoomFactor = pow(ZOOM_BASE, zoomLevel)
|
|
31
|
+
// See https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/common/page/page_zoom.cc
|
|
32
|
+
export const ZOOM_BASE = 1.2;
|
|
30
33
|
}
|
|
31
34
|
|
|
35
|
+
export const PREF_WINDOW_ZOOM_LEVEL = 'window.zoomLevel';
|
|
36
|
+
export const PREF_WINDOW_TITLE_BAR_STYLE = 'window.titleBarStyle';
|
|
37
|
+
|
|
32
38
|
export const electronWindowPreferencesSchema: PreferenceSchema = {
|
|
33
39
|
properties: {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
[PREF_WINDOW_ZOOM_LEVEL]: {
|
|
41
|
+
type: 'number',
|
|
42
|
+
default: ZoomLevel.DEFAULT,
|
|
43
|
+
minimum: ZoomLevel.MIN,
|
|
44
|
+
maximum: ZoomLevel.MAX,
|
|
45
|
+
scope: PreferenceScope.User,
|
|
46
|
+
markdownDescription: nls.localize('theia/core/window/zoomLevelPref',
|
|
47
|
+
'Adjust the default zoom level for all windows.\
|
|
48
|
+
Each increment of `0.5` above `0` (e.g. `0.5`) or below (e.g. `-0.5`) represents zooming approximately `10%` larger or smaller.\
|
|
49
|
+
You can also enter other decimal values to adjust the zoom level with a finer granularity.')
|
|
42
50
|
},
|
|
43
|
-
|
|
51
|
+
[PREF_WINDOW_TITLE_BAR_STYLE]: {
|
|
44
52
|
type: 'string',
|
|
45
53
|
enum: ['native', 'custom'],
|
|
46
54
|
default: isWindows ? 'custom' : 'native',
|
|
@@ -52,8 +60,8 @@ export const electronWindowPreferencesSchema: PreferenceSchema = {
|
|
|
52
60
|
};
|
|
53
61
|
|
|
54
62
|
export class ElectronWindowConfiguration {
|
|
55
|
-
|
|
56
|
-
|
|
63
|
+
[PREF_WINDOW_ZOOM_LEVEL]: number;
|
|
64
|
+
[PREF_WINDOW_TITLE_BAR_STYLE]: 'native' | 'custom';
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
export const ElectronWindowPreferenceContribution = Symbol('ElectronWindowPreferenceContribution');
|
|
@@ -217,8 +217,18 @@ export class TheiaMainApi implements ElectronMainApplicationContribution {
|
|
|
217
217
|
}
|
|
218
218
|
});
|
|
219
219
|
|
|
220
|
-
ipcMain.on(CHANNEL_SET_ZOOM_LEVEL, (event, zoomLevel: number) => {
|
|
221
|
-
|
|
220
|
+
ipcMain.on(CHANNEL_SET_ZOOM_LEVEL, (event, zoomLevel: number, windowName: string | undefined) => {
|
|
221
|
+
let electronWindow;
|
|
222
|
+
if (windowName) {
|
|
223
|
+
electronWindow = BrowserWindow.getAllWindows().find(win => win.webContents.mainFrame.name === windowName);
|
|
224
|
+
} else {
|
|
225
|
+
electronWindow = BrowserWindow.fromWebContents(event.sender);
|
|
226
|
+
}
|
|
227
|
+
if (electronWindow) {
|
|
228
|
+
electronWindow.webContents.setZoomLevel(zoomLevel);
|
|
229
|
+
} else {
|
|
230
|
+
console.warn(`There is no known window '${windowName}'. Thus, the zoom level could not be set.`);
|
|
231
|
+
}
|
|
222
232
|
});
|
|
223
233
|
|
|
224
234
|
ipcMain.handle(CHANNEL_GET_ZOOM_LEVEL, event => event.sender.getZoomLevel());
|
|
@@ -502,6 +502,13 @@ export class ElectronMainApplication {
|
|
|
502
502
|
};
|
|
503
503
|
}
|
|
504
504
|
|
|
505
|
+
closeWindowById(webContentsId: number): void {
|
|
506
|
+
const window = this.windows.get(webContentsId);
|
|
507
|
+
if (window) {
|
|
508
|
+
window.close(StopReason.Close);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
505
512
|
async openDefaultWindow(params?: WindowSearchParams): Promise<BrowserWindow> {
|
|
506
513
|
const options = this.getDefaultTheiaWindowOptions();
|
|
507
514
|
const [uri, electronWindow] = await Promise.all([this.createWindowUri(params), this.reuseOrCreateWindow(options)]);
|
|
@@ -37,8 +37,13 @@ export class ElectronMainWindowServiceImpl implements ElectronMainWindowService
|
|
|
37
37
|
return undefined;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
openNewDefaultWindow(params?: WindowSearchParams):
|
|
41
|
-
this.app.openDefaultWindow(params);
|
|
40
|
+
async openNewDefaultWindow(params?: WindowSearchParams): Promise<number> {
|
|
41
|
+
const electronWindow = await this.app.openDefaultWindow(params);
|
|
42
|
+
return electronWindow.webContents.id;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
closeWindow(windowId: number): void {
|
|
46
|
+
this.app.closeWindowById(windowId);
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy-search.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/tree/fuzzy-search.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy-search.spec.js","sourceRoot":"","sources":["../../../src/browser/tree/fuzzy-search.spec.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|