提交 2ef1ba79 编写于 作者: D Daniel Imms

Track terminal link underline on the link itself, not the panel

Fixes #23621
上级 6b7fe1e4
......@@ -63,6 +63,11 @@
font-weight: normal !important;
}
.monaco-workbench .panel.integrated-terminal .xterm a.active {
cursor: pointer;
text-decoration: underline;
}
/* Terminal actions */
/* Light theme */
......
......@@ -51,17 +51,7 @@
.monaco-workbench .panel.integrated-terminal .xterm a {
color: inherit;
cursor: text;
text-decoration: none;
}
.monaco-workbench .panel.integrated-terminal.ctrlcmd-held .xterm a:hover {
cursor: pointer;
text-decoration: underline;
}
.monaco-workbench .panel.integrated-terminal.ctrlcmd-held .xterm a.xterm-invalid-link:hover {
cursor: text;
cursor: inherit;
text-decoration: none;
}
......
......@@ -56,6 +56,7 @@ export type XtermLinkMatcherValidationCallback = (uri: string, element: HTMLElem
export class TerminalLinkHandler {
private _tooltipDisposables: IDisposable[] = [];
private _tooltipMouseMoveDisposable: IDisposable;
private _widgetManager: TerminalWidgetManager;
private _localLinkPattern: RegExp;
......@@ -165,7 +166,11 @@ export class TerminalLinkHandler {
private _addTooltipEventListeners(element: HTMLElement): void {
let timeout = null;
let isMessageShowing = false;
this._tooltipDisposables.push(dom.addDisposableListener(element, dom.EventType.MOUSE_OVER, () => {
this._tooltipDisposables.push(dom.addDisposableListener(element, dom.EventType.MOUSE_OVER, e => {
element.classList.toggle('active', platform.isMacintosh ? e.metaKey : e.ctrlKey);
this._tooltipMouseMoveDisposable = dom.addDisposableListener(element, dom.EventType.MOUSE_MOVE, e => {
element.classList.toggle('active', platform.isMacintosh ? e.metaKey : e.ctrlKey);
});
timeout = setTimeout(() => {
let message: string;
if (platform.isMacintosh) {
......@@ -178,6 +183,10 @@ export class TerminalLinkHandler {
}, 500);
}));
this._tooltipDisposables.push(dom.addDisposableListener(element, dom.EventType.MOUSE_OUT, () => {
element.classList.remove('active');
if (this._tooltipMouseMoveDisposable) {
this._tooltipMouseMoveDisposable.dispose();
}
clearTimeout(timeout);
this._widgetManager.closeMessage();
isMessageShowing = false;
......
......@@ -151,9 +151,6 @@ export class TerminalPanel extends Panel {
}
private _attachEventListeners(): void {
this._register(DOM.addDisposableListener(window, DOM.EventType.KEY_DOWN, (e: KeyboardEvent) => this._refreshCtrlHeld(e)));
this._register(DOM.addDisposableListener(window, DOM.EventType.KEY_UP, (e: KeyboardEvent) => this._refreshCtrlHeld(e)));
this._register(DOM.addDisposableListener(window, DOM.EventType.FOCUS, (e: KeyboardEvent) => this._refreshCtrlHeld(e)));
this._register(DOM.addDisposableListener(this._parentDomElement, 'mousedown', (event: MouseEvent) => {
if (this._terminalService.terminalInstances.length === 0) {
return;
......@@ -215,10 +212,6 @@ export class TerminalPanel extends Panel {
}));
}
private _refreshCtrlHeld(e: KeyboardEvent): void {
this._parentDomElement.classList.toggle('ctrlcmd-held', platform.isMacintosh ? e.metaKey : e.ctrlKey);
}
private _updateTheme(theme?: ITheme): void {
if (!theme) {
theme = this.themeService.getTheme();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册