Open site history links in new tab from settings

Site history items in settings are now clickable links that request navigation in a new tab, preserving the settings view. Renderer logic updated to handle 'navigate' events with a 'newTab' option from both webview IPC and postMessage.
This commit is contained in:
2025-08-10 10:55:17 +12:00
parent 5c7d831ebf
commit bd86ffc423
2 changed files with 52 additions and 7 deletions
+26 -6
View File
@@ -214,7 +214,16 @@ function createTab(inputUrl) {
// After creating dynamic webview:
webview.addEventListener('ipc-message', e => {
if (e.channel === 'theme-update') {
if (e.channel === 'navigate' && e.args[0]) {
const targetUrl = e.args[0];
const opts = e.args[1] || {};
if (opts.newTab) {
createTab(targetUrl);
} else {
urlBox.value = targetUrl;
navigate();
}
} else if (e.channel === 'theme-update') {
const home = document.getElementById('home-webview');
if (home) home.send('theme-update', ...e.args);
}
@@ -658,8 +667,15 @@ window.addEventListener('DOMContentLoaded', () => {
webviewsEl.addEventListener('ipc-message', (e) => {
// Navigation messages from home or other pages
if (e.channel === 'navigate' && e.args[0]) {
urlBox.value = e.args[0];
navigate();
const targetUrl = e.args[0];
const opts = e.args[1] || {};
if (opts.newTab) {
// Open in a new tab, leaving settings/home intact
createTab(targetUrl);
} else {
urlBox.value = targetUrl;
navigate();
}
}
// Theme update from settings webview
if (e.channel === 'theme-update' && e.args[0]) {
@@ -669,11 +685,15 @@ window.addEventListener('DOMContentLoaded', () => {
}
}
});
// Fallback: listen for postMessage navigations from home webview
// Fallback: listen for postMessage navigations from embedded pages (home/settings)
window.addEventListener('message', (event) => {
if (event.data && event.data.type === 'navigate' && event.data.url) {
urlBox.value = event.data.url;
navigate();
if (event.data.newTab) {
createTab(event.data.url);
} else {
urlBox.value = event.data.url;
navigate();
}
}
});
// only now bind the reload button (guaranteed to exist)