Add MouseEventCssClasses const enum for enable-mouse-events class.

Centralize the CSS class name in MouseService.ts and use it across mouse mode handling and tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Daniel Imms
2026-05-27 16:23:17 -07:00
co-authored by Cursor
parent bf8af4a871
commit ce1f5f9608
3 changed files with 19 additions and 15 deletions
+3 -3
View File
@@ -37,7 +37,7 @@ import { CharacterJoinerService } from 'browser/services/CharacterJoinerService'
import { CoreBrowserService } from 'browser/services/CoreBrowserService';
import { LinkProviderService } from 'browser/services/LinkProviderService';
import { MouseCoordsService } from 'browser/services/MouseCoordsService';
import { MouseService } from 'browser/services/MouseService';
import { MouseEventCssClasses, MouseService } from 'browser/services/MouseService';
import { RenderService } from 'browser/services/RenderService';
import { SelectionService } from 'browser/services/SelectionService';
import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IKeyboardService, ILinkProviderService, IMouseCoordsService, IMouseService, IRenderService, ISelectionService, IThemeService } from 'browser/services/Services';
@@ -620,10 +620,10 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal {
// apply mouse event classes set by escape codes before terminal was attached
if (this.mouseStateService.areMouseEventsActive && !this.options.mouseEventsRequireAlt) {
this._selectionService.disable();
this.element.classList.add('enable-mouse-events');
this.element.classList.add(MouseEventCssClasses.ENABLE_MOUSE_EVENTS);
} else {
this._selectionService.enable();
this.element.classList.remove('enable-mouse-events');
this.element.classList.remove(MouseEventCssClasses.ENABLE_MOUSE_EVENTS);
}
if (this.options.screenReaderMode) {
+7 -7
View File
@@ -3,7 +3,7 @@
* @license MIT
*/
import { assert } from 'chai';
import { AltMouseCursorController, MouseService } from 'browser/services/MouseService';
import { AltMouseCursorController, MouseEventCssClasses, MouseService } from 'browser/services/MouseService';
import { MouseStateService } from 'common/services/MouseStateService';
import { CoreMouseAction, CoreMouseButton } from 'common/Types';
import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services';
@@ -279,15 +279,15 @@ describe('MouseService mouseEventsRequireAlt', () => {
}, disposable => disposable, () => {});
mouseStateService.activeProtocol = 'ANY';
assert.isTrue(element.classList.contains('enable-mouse-events'));
assert.isTrue(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS));
assert.equal(selectionService.disableCount, 1);
optionsService.options.mouseEventsRequireAlt = true;
assert.isFalse(element.classList.contains('enable-mouse-events'));
assert.isFalse(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS));
assert.equal(selectionService.enableCount, 2);
optionsService.options.mouseEventsRequireAlt = false;
assert.isTrue(element.classList.contains('enable-mouse-events'));
assert.isTrue(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS));
assert.equal(selectionService.disableCount, 2);
});
@@ -344,10 +344,10 @@ describe('MouseService mouseEventsRequireAlt', () => {
getModifierState: (key: string) => key === 'Alt' && altHeld
} as KeyboardEvent);
assert.isFalse(element.classList.contains('enable-mouse-events'));
assert.isFalse(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS));
sync(true);
assert.isTrue(element.classList.contains('enable-mouse-events'));
assert.isTrue(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS));
sync(false);
assert.isFalse(element.classList.contains('enable-mouse-events'));
assert.isFalse(element.classList.contains(MouseEventCssClasses.ENABLE_MOUSE_EVENTS));
});
});
+9 -5
View File
@@ -13,6 +13,10 @@ import { Gesture, EventType as GestureEventType, IGestureEvent } from 'browser/s
type RequestedMouseEvents = Record<'mouseup' | 'wheel' | 'mousedrag' | 'mousemove', EventListener | null>;
export const enum MouseEventCssClasses {
ENABLE_MOUSE_EVENTS = 'enable-mouse-events'
}
interface IMouseBindContext {
readonly target: IMouseServiceTarget;
readonly focus: () => void;
@@ -384,11 +388,11 @@ export class MouseService implements IMouseService {
this._altMouseCursor?.resetClass();
this._selectionService.enable();
} else {
element.classList.add('enable-mouse-events');
element.classList.add(MouseEventCssClasses.ENABLE_MOUSE_EVENTS);
this._selectionService.disable();
}
} else {
element.classList.remove('enable-mouse-events');
element.classList.remove(MouseEventCssClasses.ENABLE_MOUSE_EVENTS);
this._selectionService.enable();
}
}
@@ -577,7 +581,7 @@ export class MouseService implements IMouseService {
}
/**
* Toggles `enable-mouse-events` on the terminal element while alt is held when
* Toggles MouseEventCssClasses.ENABLE_MOUSE_EVENTS on the terminal element while alt is held when
* `mouseEventsRequireAlt` is active. DOM listeners are only registered while active.
*/
export class AltMouseCursorController implements IDisposable {
@@ -630,9 +634,9 @@ export class AltMouseCursorController implements IDisposable {
private _updateClass(altHeld: boolean): void {
if (altHeld) {
this._element.classList.add('enable-mouse-events');
this._element.classList.add(MouseEventCssClasses.ENABLE_MOUSE_EVENTS);
} else {
this._element.classList.remove('enable-mouse-events');
this._element.classList.remove(MouseEventCssClasses.ENABLE_MOUSE_EVENTS);
}
}
}