macOS: fix Open In New Tab (fix #1260, PR #1385)

This commit is contained in:
Adam Weeden 2022-04-18 19:06:44 -04:00 committed by GitHub
parent 74bc2d4188
commit 10fb19b377
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 8 deletions

View File

@ -1,9 +1,13 @@
import { BrowserWindow, ContextMenuParams } from 'electron';
import {
BrowserWindow,
ContextMenuParams,
NewWindowWebContentsEvent,
} from 'electron';
import contextMenu from 'electron-context-menu';
import log from 'loglevel';
import { nativeTabsSupported, openExternal } from '../helpers/helpers';
import { setupNativefierWindow } from '../helpers/windowEvents';
import { createNewTab, createNewWindow } from '../helpers/windowHelpers';
import { createNewWindow } from '../helpers/windowHelpers';
import {
OutputOptions,
outputOptionsToWindowOptions,
@ -43,12 +47,25 @@ export function initContextMenu(
items.push({
label: 'Open Link in New Tab',
click: () =>
createNewTab(
outputOptionsToWindowOptions(options),
setupNativefierWindow,
// Fire a new window event for a foreground tab
// Previously we called createNewTab directly, but it had incosistent and buggy behavior
// as it was mostly designed for running off of events. So this will create a new event
// for a foreground-tab for the event handler to grab and take care of instead.
(window as BrowserWindow).webContents.emit(
// event name
'new-window',
// event object
{
// Leave to the default for a NewWindowWebContentsEvent
newGuest: undefined,
...new Event('new-window'),
} as NewWindowWebContentsEvent,
// url
params.linkURL,
true,
window,
// frameName
window?.webContents.mainFrame.name ?? '',
// disposition
'foreground-tab',
),
});
}

View File

@ -42,7 +42,9 @@ export function onNewWindow(
});
const preventDefault = (newGuest?: BrowserWindow): void => {
log.debug('onNewWindow.preventDefault', { newGuest, event });
event.preventDefault();
if (event.preventDefault) {
event.preventDefault();
}
if (newGuest) {
event.newGuest = newGuest;
}