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:
@@ -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) {
|
||||
|
||||
@@ -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));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user