diff --git a/frontend/src/state-providers/tooltip.ts b/frontend/src/state-providers/tooltip.ts index e3783496..09f2fff6 100644 --- a/frontend/src/state-providers/tooltip.ts +++ b/frontend/src/state-providers/tooltip.ts @@ -55,6 +55,16 @@ export function createTooltipState(editor: Editor) { }, SHOW_TOOLTIP_DELAY_MS); }); + // Hide tooltip and cancel any pending timeout when the mouse leaves the application window + document.addEventListener("mouseleave", () => { + if (tooltipTimeout) clearTimeout(tooltipTimeout); + closeTooltip(); + }); + + document.addEventListener("mousedown", closeTooltip); + document.addEventListener("keydown", closeTooltip); + document.addEventListener("wheel", closeTooltip); + editor.subscriptions.subscribeJsMessage(SendShortcutShiftClick, async (data) => { update((state) => { state.shiftClickShortcut = data.shortcut; @@ -74,9 +84,6 @@ export function createTooltipState(editor: Editor) { }); }); - document.addEventListener("mousedown", closeTooltip); - document.addEventListener("keydown", closeTooltip); - // Stop showing a tooltip if the user clicks or presses a key, and require the user to first move out of the element before it can re-appear function closeTooltip() { update((state) => {