From 48f68a77026f6dc242f931ad9d25a4a39aef6e9e Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sat, 29 Jun 2019 14:34:02 -0700 Subject: [PATCH] Add used members from SelectionService to interface --- src/SelectionService.ts | 4 ++++ src/Terminal.ts | 14 ++++++-------- src/browser/services/Services.d.ts | 20 +++++++++++++++++--- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/SelectionService.ts b/src/SelectionService.ts index 46b1556c..2eeb92e0 100644 --- a/src/SelectionService.ts +++ b/src/SelectionService.ts @@ -145,6 +145,10 @@ export class SelectionService implements ISelectionService { this.initBuffersListeners(); } + public reset(): void { + this.clearSelection(); + } + public initBuffersListeners(): void { this._trimListener = this._bufferService.buffer.lines.onTrim(amount => this._onTrim(amount)); this._bufferService.buffers.onBufferActivate(e => this._onBufferActivate(e)); diff --git a/src/Terminal.ts b/src/Terminal.ts index 8e238fe8..79395206 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -49,7 +49,7 @@ import { ColorManager } from 'browser/ColorManager'; import { RenderService } from 'browser/services/RenderService'; import { IOptionsService, IBufferService, ICoreService } from 'common/services/Services'; import { OptionsService } from 'common/services/OptionsService'; -import { ICharSizeService, IRenderService, IMouseService } from 'browser/services/Services'; +import { ICharSizeService, IRenderService, IMouseService, ISelectionService } from 'browser/services/Services'; import { CharSizeService } from 'browser/services/CharSizeService'; import { BufferService, MINIMUM_COLS, MINIMUM_ROWS } from 'common/services/BufferService'; import { Disposable } from 'common/Lifecycle'; @@ -113,8 +113,9 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp // browser services private _charSizeService: ICharSizeService; - private _renderService: IRenderService; private _mouseService: IMouseService; + private _renderService: IRenderService; + public selectionService: ISelectionService; // modes public applicationKeypad: boolean; @@ -174,7 +175,6 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp private _inputHandler: InputHandler; public soundManager: SoundManager; - public selectionService: SelectionService; public linkifier: ILinkifier; public viewport: IViewport; private _compositionHelper: ICompositionHelper; @@ -306,11 +306,6 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp this._mouseZoneManager = this._mouseZoneManager || null; this.soundManager = this.soundManager || new SoundManager(this); - if (this.selectionService) { - this.selectionService.clearSelection(); - this.selectionService.initBuffersListeners(); - } - if (this.options.windowsMode) { this._windowsMode = applyWindowsMode(this); } @@ -1888,6 +1883,9 @@ export class Terminal extends Disposable implements ITerminal, IDisposable, IInp this._setup(); this._bufferService.reset(); this._coreService.reset(); + if (this.selectionService) { + this.selectionService.reset(); + } // reattach this._customKeyEventHandler = customKeyEventHandler; diff --git a/src/browser/services/Services.d.ts b/src/browser/services/Services.d.ts index 573f0b63..6426eeea 100644 --- a/src/browser/services/Services.d.ts +++ b/src/browser/services/Services.d.ts @@ -6,6 +6,7 @@ import { IEvent } from 'common/EventEmitter'; import { IRenderDimensions, IRenderer, CharacterJoinerHandler } from 'browser/renderer/Types'; import { IColorSet } from 'browser/Types'; +import { ISelectionRedrawRequestEvent } from 'browser/selection/Types'; export interface ICharSizeService { readonly width: number; @@ -48,13 +49,26 @@ export interface IRenderService { } export interface ISelectionService { - selectionText: string; - selectionStart: [number, number]; - selectionEnd: [number, number]; + readonly selectionText: string; + readonly hasSelection: boolean; + readonly selectionStart: [number, number]; + readonly selectionEnd: [number, number]; + + readonly onLinuxMouseSelection: IEvent; + readonly onRedrawRequest: IEvent + readonly onSelectionChange: IEvent; disable(): void; enable(): void; + reset(): void; setSelection(row: number, col: number, length: number): void; + selectAll(): void; + selectLines(start: number, end: number): void; + clearSelection(): void; isClickInSelection(event: MouseEvent): boolean; selectWordAtCursor(event: MouseEvent): void; + shouldColumnSelect(event: KeyboardEvent | MouseEvent): boolean; + shouldForceSelection(event: MouseEvent): boolean; + refresh(isLinuxMouseSelection?: boolean): void; + onMouseDown(event: MouseEvent): void; }