diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 569f1b7e..6cc42cc9 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -150,7 +150,7 @@ export default function Sidebar({ aria-label={t('sidebar.libraryScope')} aria-expanded={libraryDropdownOpen} aria-haspopup="listbox" - data-tooltip={t('sidebar.libraryScope')} + data-tooltip={libraryDropdownOpen ? undefined : t('sidebar.libraryScope')} data-tooltip-pos="bottom" > {!libraryTriggerPlain ? ( diff --git a/src/components/TooltipPortal.tsx b/src/components/TooltipPortal.tsx index 52585a3d..469c7d4c 100644 --- a/src/components/TooltipPortal.tsx +++ b/src/components/TooltipPortal.tsx @@ -35,13 +35,20 @@ export default function TooltipPortal() { const target = (e.target as HTMLElement).closest('[data-tooltip]'); if (!target) setTooltip(null); }; + /** Clicking a tooltip anchor (e.g. opening a dropdown) keeps the cursor inside the element, so mouseout never runs — hide immediately. */ + const onDown = (e: MouseEvent) => { + const t = (e.target as HTMLElement).closest('[data-tooltip]'); + if (t) setTooltip(null); + }; document.addEventListener('mouseover', onOver); document.addEventListener('mouseout', onOut); document.addEventListener('mousemove', onMove, { passive: true }); + document.addEventListener('mousedown', onDown, true); return () => { document.removeEventListener('mouseover', onOver); document.removeEventListener('mouseout', onOut); document.removeEventListener('mousemove', onMove); + document.removeEventListener('mousedown', onDown, true); }; }, []);