a0e76e623d
Introduces a BrowserView-based tab management system for desktop mode, replacing webview elements for tab content. Adds IPC handlers and state management for creating, activating, destroying, and communicating with BrowserViews. Implements an overlay menu popup window for tab actions and zoom controls. Updates renderer UI to use a dedicated view host container, and refactors tab creation and navigation logic to use BrowserViews. Improves focus styling in CSS and updates preload and IPC messaging to support BrowserView contexts.
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
const zoomPercentEl = document.getElementById('zoom-percent');
|
|
|
|
function setCssVar(name, value, fallback) {
|
|
const val = value || fallback;
|
|
if (val) document.documentElement.style.setProperty(name, val);
|
|
}
|
|
|
|
function applyTheme(theme) {
|
|
const colors = theme?.colors || theme || {};
|
|
setCssVar('--bg', colors.bg, '#0b0d10');
|
|
setCssVar('--dark-blue', colors.darkBlue, '#0b1c2b');
|
|
setCssVar('--dark-purple', colors.darkPurple, '#1b1035');
|
|
setCssVar('--primary', colors.primary, '#7b2eff');
|
|
setCssVar('--accent', colors.accent, '#00c6ff');
|
|
setCssVar('--text', colors.text, '#e0e0e0');
|
|
setCssVar('--url-bar-bg', colors.urlBarBg, '#1c2030');
|
|
setCssVar('--url-bar-border', colors.urlBarBorder, '#3e4652');
|
|
}
|
|
|
|
async function refreshZoom() {
|
|
if (!window.electronAPI?.invoke || !zoomPercentEl) return;
|
|
try {
|
|
const z = await window.electronAPI.invoke('get-zoom-factor');
|
|
zoomPercentEl.textContent = `${Math.round(z * 100)}%`;
|
|
} catch {}
|
|
}
|
|
|
|
window.electronAPI?.on?.('menu-popup-init', (payload) => {
|
|
applyTheme(payload?.theme);
|
|
refreshZoom();
|
|
});
|
|
|
|
window.addEventListener('click', (e) => {
|
|
const btn = e.target.closest('button[data-cmd]');
|
|
if (!btn) return;
|
|
const cmd = btn.getAttribute('data-cmd');
|
|
window.electronAPI?.send?.('menu-popup-command', { cmd });
|
|
});
|
|
|
|
window.addEventListener('keydown', (e) => {
|
|
if (e.key === 'Escape') {
|
|
window.electronAPI?.send?.('menu-popup-command', { cmd: 'close' });
|
|
}
|
|
});
|
|
|
|
refreshZoom();
|