From 8bdb606fd1f16c95116d251ab6bbb0808870a1d2 Mon Sep 17 00:00:00 2001 From: Sebastian Pfitzner Date: Mon, 21 Jan 2019 11:09:00 +0100 Subject: [PATCH] fix mouse event listener change before term attached --- src/InputHandler.ts | 8 ++++++-- src/Terminal.ts | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/InputHandler.ts b/src/InputHandler.ts index 8846b4be..1b3907fd 100644 --- a/src/InputHandler.ts +++ b/src/InputHandler.ts @@ -1291,7 +1291,9 @@ export class InputHandler extends Disposable implements IInputHandler { this._terminal.vt200Mouse = params[0] === 1000; this._terminal.normalMouse = params[0] > 1000; this._terminal.mouseEvents = true; - this._terminal.element.classList.add('enable-mouse-events'); + if (this._terminal.element) { + this._terminal.element.classList.add('enable-mouse-events'); + } this._terminal.selectionManager.disable(); this._terminal.log('Binding to mouse events.'); break; @@ -1479,7 +1481,9 @@ export class InputHandler extends Disposable implements IInputHandler { this._terminal.vt200Mouse = false; this._terminal.normalMouse = false; this._terminal.mouseEvents = false; - this._terminal.element.classList.remove('enable-mouse-events'); + if (this._terminal.element) { + this._terminal.element.classList.remove('enable-mouse-events'); + } this._terminal.selectionManager.enable(); break; case 1004: // send focusin/focusout events diff --git a/src/Terminal.ts b/src/Terminal.ts index 4c0cd0f8..cf1a3ba5 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -733,6 +733,12 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II this.register(addDisposableDomListener(this._viewportElement, 'scroll', () => this.selectionManager.refresh())); this.mouseHelper = new MouseHelper(this.renderer); + // apply mouse event classes set by escape codes before terminal was attached + if (this.mouseEvents) { + this.element.classList.add('enable-mouse-events'); + } else { + this.element.classList.remove('enable-mouse-events'); + } if (this.options.screenReaderMode) { // Note that this must be done *after* the renderer is created in order to