Menu popup: visibility, zoom sync, and tab fixes

Track menu popup visibility and propagate zoom level to the popup. Add menu_popup_visible_ flag, SendMenuPopupZoom(), and call it when creating/showing the popup and when adjusting zoom. Make CreateNewTab accept an optional URL and route popup/new-tab flows to it. Prevent per-tab child closes from triggering app shutdown by tracking closing_tab_browsers_ and adding ForgetClosingTabBrowser(). Treat MenuPopup role specially when enabling frame hit-testing.

Platform: remove usage of ApplyRoundedBrowserRegion and switch menu popup sizing to use resized client_size helpers (consolidate calculations across Win/Mac/Linux). UI: update menu-popup CSS/JS (new styling, font, zoom formatting API via NebulaMenuPopup.setZoomLevel), wire settings to use nebulaNative.postMessage for new-tab, and remove the static menu-popup.html. Misc: small chrome CSS/JS tweaks and ensure chrome state includes zoomLevel.
This commit is contained in:
Andrew Zambazos
2026-05-18 18:28:20 +12:00
parent e51594a010
commit c514e4faec
14 changed files with 156 additions and 130 deletions
+4 -2
View File
@@ -489,8 +489,10 @@
a.addEventListener('click', (e) => {
e.preventDefault();
try {
if (window.electronAPI && typeof window.electronAPI.sendToHost === 'function') {
// Ask the host to open this URL in a new tab to keep Settings open
if (window.nebulaNative && typeof window.nebulaNative.postMessage === 'function') {
// Ask the CEF host to open this URL in a new tab to keep Settings open.
window.nebulaNative.postMessage('new-tab', item);
} else if (window.electronAPI && typeof window.electronAPI.sendToHost === 'function') {
window.electronAPI.sendToHost('navigate', item, { newTab: true });
} else if (window.parent && window.parent !== window) {
// Fallback: postMessage to parent if available