Skip to content

Commit 0f64a3c

Browse files
authored
Add vscode-context-menu-visible class in webviews (microsoft#181433)
* Add vscode-context-menu-visible class in webviews * Remove assertion
1 parent 8baeed4 commit 0f64a3c

File tree

4 files changed

+20
-1
lines changed

4 files changed

+20
-1
lines changed

src/vs/workbench/contrib/webview/browser/pre/index-no-csp.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,14 @@
11421142
}
11431143
});
11441144

1145+
// propagate vscode-context-menu-visible class
1146+
hostMessaging.onMessage('set-context-menu-visible', (_event, data) => {
1147+
const target = getActiveFrame();
1148+
if (target && target.contentDocument) {
1149+
target.contentDocument.body.classList.toggle('vscode-context-menu-visible', data.visible);
1150+
}
1151+
});
1152+
11451153
hostMessaging.onMessage('set-title', async (_event, data) => {
11461154
const target = getActiveFrame();
11471155
if (target) {

src/vs/workbench/contrib/webview/browser/pre/index.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta charset="UTF-8">
66

77
<meta http-equiv="Content-Security-Policy"
8-
content="default-src 'none'; script-src 'sha256-N4YFn5ze5crjPqMK/opogKs7bSGWtf3lmjV/3LfbSOs=' 'self'; frame-src 'self'; style-src 'unsafe-inline';">
8+
content="default-src 'none'; script-src 'sha256-7Y08cqii1UgeZbSST9r8UPSownOSMa3/PiKe77avh7I=' 'self'; frame-src 'self'; style-src 'unsafe-inline';">
99

1010
<!-- Disable pinch zooming -->
1111
<meta name="viewport"
@@ -1143,6 +1143,14 @@
11431143
}
11441144
});
11451145

1146+
// propagate vscode-context-menu-visible class
1147+
hostMessaging.onMessage('set-context-menu-visible', (_event, data) => {
1148+
const target = getActiveFrame();
1149+
if (target && target.contentDocument) {
1150+
target.contentDocument.body.classList.toggle('vscode-context-menu-visible', data.visible);
1151+
}
1152+
});
1153+
11461154
hostMessaging.onMessage('set-title', async (_event, data) => {
11471155
const target = getActiveFrame();
11481156
if (target) {

src/vs/workbench/contrib/webview/browser/webviewElement.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,8 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD
326326
this._register(Event.runAndSubscribe(webviewThemeDataProvider.onThemeDataChanged, () => this.style()));
327327
this._register(_accessibilityService.onDidChangeReducedMotion(() => this.style()));
328328
this._register(_accessibilityService.onDidChangeScreenReaderOptimized(() => this.style()));
329+
this._register(contextMenuService.onDidShowContextMenu(() => this._send('set-context-menu-visible', { visible: true })));
330+
this._register(contextMenuService.onDidHideContextMenu(() => this._send('set-context-menu-visible', { visible: false })));
329331

330332
this._confirmBeforeClose = configurationService.getValue<string>('window.confirmBeforeClose');
331333

src/vs/workbench/contrib/webview/browser/webviewMessages.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export type ToWebviewMessage = {
6666
location: string | undefined;
6767
};
6868
'set-confirm-before-close': string;
69+
'set-context-menu-visible': { visible: boolean };
6970
'initial-scroll-position': number;
7071
'content': UpdateContentEvent;
7172
'set-title': string | undefined;

0 commit comments

Comments
 (0)