From 08beb5585315a0d22bfaf6eeafeddab36f4bdc3f Mon Sep 17 00:00:00 2001 From: Miika Kuisma Date: Thu, 14 May 2026 11:43:47 +0300 Subject: [PATCH] PuterJS - Fix submenu behavior on mobile devices in Menubar web component --- src/puter-js/src/ui/components/PuterContextMenu.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/puter-js/src/ui/components/PuterContextMenu.js b/src/puter-js/src/ui/components/PuterContextMenu.js index 3592c1422..03f8e209c 100644 --- a/src/puter-js/src/ui/components/PuterContextMenu.js +++ b/src/puter-js/src/ui/components/PuterContextMenu.js @@ -693,6 +693,10 @@ class PuterContextMenu extends PuterWebComponent { }); el.addEventListener('mouseleave', () => { + // iOS Safari synthesizes mouseleave on touchend after a tap, + // which would schedule the just-opened submenu to close. + // On touch, submenus are driven by explicit taps, not hover. + if ( this._isMobile() ) return; clearTimeout(this.#submenuTimeout); if ( el.dataset.hasSubmenu === 'true' && this.#activeSubmenu && this.#activeSubmenu.parentEl === el ) { this._scheduleSubmenuClose();