@@ -184,26 +184,23 @@ class WebviewPortMappingProvider extends Disposable {
184
184
185
185
class WebviewKeyboardHandler {
186
186
187
- private readonly _webviews = new Set < WebviewTagHandle > ( ) ;
187
+ private readonly _webviews = new Set < WebviewTag > ( ) ;
188
188
private readonly _isUsingNativeTitleBars : boolean ;
189
189
190
190
constructor ( configurationService : IConfigurationService ) {
191
191
this . _isUsingNativeTitleBars = configurationService . getValue < string > ( 'window.titleBarStyle' ) === 'native' ;
192
192
}
193
193
194
- public add (
195
- webviewHandle : WebviewTagHandle ,
196
- ) : IDisposable {
197
- this . _webviews . add ( webviewHandle ) ;
194
+ public add ( webview : WebviewTag ) : IDisposable {
195
+ this . _webviews . add ( webview ) ;
198
196
199
197
const disposables = new DisposableStore ( ) ;
198
+
200
199
if ( this . shouldToggleMenuShortcutsEnablement ) {
201
- disposables . add ( webviewHandle . onFirstLoad ( ( ) => {
202
- this . setIgnoreMenuShortcutsForWebview ( webviewHandle , true ) ;
203
- } ) ) ;
200
+ this . setIgnoreMenuShortcutsForWebview ( webview , true ) ;
204
201
}
205
202
206
- disposables . add ( addDisposableListener ( webviewHandle . webview , 'ipc-message' , ( event ) => {
203
+ disposables . add ( addDisposableListener ( webview , 'ipc-message' , ( event ) => {
207
204
switch ( event . channel ) {
208
205
case 'did-focus' :
209
206
this . setIgnoreMenuShortcuts ( true ) ;
@@ -217,7 +214,7 @@ class WebviewKeyboardHandler {
217
214
218
215
return toDisposable ( ( ) => {
219
216
disposables . dispose ( ) ;
220
- this . _webviews . delete ( webviewHandle ) ;
217
+ this . _webviews . delete ( webview ) ;
221
218
} ) ;
222
219
}
223
220
@@ -231,12 +228,9 @@ class WebviewKeyboardHandler {
231
228
}
232
229
}
233
230
234
- private setIgnoreMenuShortcutsForWebview ( webview : WebviewTagHandle , value : boolean ) {
231
+ private setIgnoreMenuShortcutsForWebview ( webview : WebviewTag , value : boolean ) {
235
232
if ( this . shouldToggleMenuShortcutsEnablement ) {
236
- const contents = webview . webContents ;
237
- if ( ! contents ?. isDestroyed ( ) ) {
238
- contents ?. setIgnoreMenuShortcuts ( value ) ;
239
- }
233
+ ipcRenderer . send ( 'vscode:webview.setIgnoreMenuShortcuts' , webview . getWebContentsId ( ) , value ) ;
240
234
}
241
235
}
242
236
}
@@ -290,7 +284,9 @@ export class ElectronWebviewBasedWebview extends BaseWebview<WebviewTag> impleme
290
284
tunnelService ,
291
285
) ) ;
292
286
293
- this . _register ( ElectronWebviewBasedWebview . getWebviewKeyboardHandler ( configurationService ) . add ( webviewAndContents ) ) ;
287
+ this . _register ( addDisposableListener ( this . element ! , 'did-start-loading' , once ( ( ) => {
288
+ this . _register ( ElectronWebviewBasedWebview . getWebviewKeyboardHandler ( configurationService ) . add ( this . element ! ) ) ;
289
+ } ) ) ) ;
294
290
295
291
this . _domReady = new Promise ( resolve => {
296
292
const subscription = this . _register ( this . on ( WebviewMessageChannels . webviewReady , ( ) => {
0 commit comments