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 contextMenu from 'electron-context-menu';
import log from 'loglevel'; import log from 'loglevel';
import { nativeTabsSupported, openExternal } from '../helpers/helpers'; import { nativeTabsSupported, openExternal } from '../helpers/helpers';
import { setupNativefierWindow } from '../helpers/windowEvents'; import { setupNativefierWindow } from '../helpers/windowEvents';
import { createNewTab, createNewWindow } from '../helpers/windowHelpers'; import { createNewWindow } from '../helpers/windowHelpers';
import { import {
OutputOptions, OutputOptions,
outputOptionsToWindowOptions, outputOptionsToWindowOptions,
@ -43,12 +47,25 @@ export function initContextMenu(
items.push({ items.push({
label: 'Open Link in New Tab', label: 'Open Link in New Tab',
click: () => click: () =>
createNewTab( // Fire a new window event for a foreground tab
outputOptionsToWindowOptions(options), // Previously we called createNewTab directly, but it had incosistent and buggy behavior
setupNativefierWindow, // 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, params.linkURL,
true, // frameName
window, window?.webContents.mainFrame.name ?? '',
// disposition
'foreground-tab',
), ),
}); });
} }

View File

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