Merge branch 'master' into character-joiner

This commit is contained in:
Daniel Imms
2018-07-03 11:50:27 -07:00
committed by GitHub
+26 -15
View File
@@ -1007,28 +1007,39 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II
return this.cancel(ev); return this.cancel(ev);
} }
// TODO: these event listeners should be managed by the disposable, the Terminal reference may // TODO: All mouse handling should be pulled into its own file.
// be kept aroud if Terminal.dispose is fired when the mouse is down
// bind events // bind events
let moveHandler: (event: MouseEvent) => void;
if (this.normalMouse) { if (this.normalMouse) {
this._document.addEventListener('mousemove', sendMove); moveHandler = (event: MouseEvent) => {
// Do nothing if normal mouse mode is on. This can happen if the mouse is held down when the
// terminal exits normalMouse mode.
if (!this.normalMouse) {
return;
}
sendMove(event);
};
// TODO: these event listeners should be managed by the disposable, the Terminal reference may
// be kept aroud if Terminal.dispose is fired when the mouse is down
this._document.addEventListener('mousemove', moveHandler);
} }
// x10 compatibility mode can't send button releases // x10 compatibility mode can't send button releases
if (!this.x10Mouse) { const handler = (ev: MouseEvent) => {
const handler = (ev: MouseEvent) => { if (this.normalMouse && !this.x10Mouse) {
sendButton(ev); sendButton(ev);
// TODO: Seems dangerous calling this on document? }
if (this.normalMouse) { if (moveHandler) {
this._document.removeEventListener('mousemove', sendMove); // Even though this should only be attached when this.normalMouse is true, holding the
} // mouse button down when normalMouse changes can happen. Just always try to remove it.
this._document.removeEventListener('mouseup', handler); this._document.removeEventListener('mousemove', moveHandler);
return this.cancel(ev); moveHandler = null;
}; }
// TODO: Seems dangerous calling this on document? this._document.removeEventListener('mouseup', handler);
this._document.addEventListener('mouseup', handler); return this.cancel(ev);
} };
this._document.addEventListener('mouseup', handler);
return this.cancel(ev); return this.cancel(ev);
})); }));