From 8bdb606fd1f16c95116d251ab6bbb0808870a1d2 Mon Sep 17 00:00:00 2001 From: Sebastian Pfitzner Date: Mon, 21 Jan 2019 11:09:00 +0100 Subject: [PATCH 1/2] 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 From e1363e9fe7746c4e11d7555df6428b04c5131d4e Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 24 Jan 2019 11:32:09 -0800 Subject: [PATCH 2/2] Replace if/add/remove with a toggle --- src/Terminal.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Terminal.ts b/src/Terminal.ts index cf1a3ba5..b7d5bf7f 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -734,11 +734,7 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II 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'); - } + this.element.classList.toggle('enable-mouse-events', this.mouseEvents); if (this.options.screenReaderMode) { // Note that this must be done *after* the renderer is created in order to