Path: blob/main/src/vs/editor/contrib/hover/browser/hoverUtils.ts
4779 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as dom from '../../../../base/browser/dom.js';6import { IEditorMouseEvent } from '../../../browser/editorBrowser.js';78export function isMousePositionWithinElement(element: HTMLElement, posx: number, posy: number): boolean {9const elementRect = dom.getDomNodePagePosition(element);10if (posx < elementRect.left11|| posx > elementRect.left + elementRect.width12|| posy < elementRect.top13|| posy > elementRect.top + elementRect.height) {14return false;15}16return true;17}18/**19* Determines whether hover should be shown based on the hover setting and current keyboard modifiers.20* When `hoverEnabled` is 'onKeyboardModifier', hover is shown when the user presses the opposite21* modifier key from the multi-cursor modifier (e.g., if multi-cursor uses Alt, hover shows on Ctrl/Cmd).22*23* @param hoverEnabled - The hover enabled setting24* @param multiCursorModifier - The modifier key used for multi-cursor operations25* @param mouseEvent - The current mouse event containing modifier key states26* @returns true if hover should be shown, false otherwise27*/28export function shouldShowHover(29hoverEnabled: 'on' | 'off' | 'onKeyboardModifier',30multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey',31mouseEvent: IEditorMouseEvent32): boolean {33if (hoverEnabled === 'on') {34return true;35}36if (hoverEnabled === 'off') {37return false;38}39if (multiCursorModifier === 'altKey') {40return mouseEvent.event.ctrlKey || mouseEvent.event.metaKey;41} else {42return mouseEvent.event.altKey;43}44}454647