fix(electron): active view sometimes does not get focused (#8683)

This commit is contained in:
Peng Xiao
2024-11-04 16:34:11 +08:00
committed by GitHub
parent d700f828b7
commit 378c9eb73a
2 changed files with 27 additions and 16 deletions
@@ -171,22 +171,6 @@ export function createApplicationMenu() {
switchToPreviousTab();
},
},
{
label: 'Switch to next tab (mac)',
accelerator: 'Command+]',
visible: false,
click: () => {
switchToNextTab();
},
},
{
label: 'Switch to previous tab (mac)',
accelerator: 'Command+[',
visible: false,
click: () => {
switchToPreviousTab();
},
},
{
label: 'Switch to next tab (mac 2)',
accelerator: 'Alt+Command+]',
@@ -734,6 +734,33 @@ export class WebContentViewsManager {
app.on('before-quit', () => {
disposables.forEach(d => d.unsubscribe());
});
const focusActiveView = () => {
if (
!this.activeWorkbenchView ||
this.activeWorkbenchView.webContents.isFocused()
) {
return;
}
this.activeWorkbenchView?.webContents.focus();
setTimeout(() => {
focusActiveView();
}, 100);
};
app.on('browser-window-focus', () => {
focusActiveView();
});
combineLatest([
this.activeWorkbenchId$,
this.mainWindowManager.mainWindow$,
]).subscribe(([_, window]) => {
// makes sure the active view is always focused
if (window?.isFocused()) {
focusActiveView();
}
});
};
getViewById = (id: string) => {