Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/contrib/hover/browser/hoverUtils.ts
4779 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as dom from '../../../../base/browser/dom.js';
7
import { IEditorMouseEvent } from '../../../browser/editorBrowser.js';
8
9
export function isMousePositionWithinElement(element: HTMLElement, posx: number, posy: number): boolean {
10
const elementRect = dom.getDomNodePagePosition(element);
11
if (posx < elementRect.left
12
|| posx > elementRect.left + elementRect.width
13
|| posy < elementRect.top
14
|| posy > elementRect.top + elementRect.height) {
15
return false;
16
}
17
return true;
18
}
19
/**
20
* Determines whether hover should be shown based on the hover setting and current keyboard modifiers.
21
* When `hoverEnabled` is 'onKeyboardModifier', hover is shown when the user presses the opposite
22
* modifier key from the multi-cursor modifier (e.g., if multi-cursor uses Alt, hover shows on Ctrl/Cmd).
23
*
24
* @param hoverEnabled - The hover enabled setting
25
* @param multiCursorModifier - The modifier key used for multi-cursor operations
26
* @param mouseEvent - The current mouse event containing modifier key states
27
* @returns true if hover should be shown, false otherwise
28
*/
29
export function shouldShowHover(
30
hoverEnabled: 'on' | 'off' | 'onKeyboardModifier',
31
multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey',
32
mouseEvent: IEditorMouseEvent
33
): boolean {
34
if (hoverEnabled === 'on') {
35
return true;
36
}
37
if (hoverEnabled === 'off') {
38
return false;
39
}
40
if (multiCursorModifier === 'altKey') {
41
return mouseEvent.event.ctrlKey || mouseEvent.event.metaKey;
42
} else {
43
return mouseEvent.event.altKey;
44
}
45
}
46
47