diff --git a/src/browser/Terminal.ts b/src/browser/Terminal.ts index fe19f954..fd1e95c8 100644 --- a/src/browser/Terminal.ts +++ b/src/browser/Terminal.ts @@ -747,8 +747,10 @@ export class Terminal extends CoreTerminal implements ITerminal { if (!(events & CoreMouseEventType.UP)) { this._document!.removeEventListener('mouseup', requestedEvents.mouseup!); + el.removeEventListener('mouseup', requestedEvents.mouseup!); requestedEvents.mouseup = null; } else if (!requestedEvents.mouseup) { + el.addEventListener('mouseup', eventListeners.mouseup); requestedEvents.mouseup = eventListeners.mouseup; } diff --git a/src/browser/services/MouseService.ts b/src/browser/services/MouseService.ts index 38561dfd..664d845e 100644 --- a/src/browser/services/MouseService.ts +++ b/src/browser/services/MouseService.ts @@ -31,17 +31,11 @@ export class MouseService implements IMouseService { public getMouseReportCoords(event: MouseEvent, element: HTMLElement): { col: number, row: number, x: number, y: number } | undefined { const coords = getCoordsRelativeToElement(window, event, element); - - // due to rounding issues in zoom states pixel values might be negative or overflow actual canvas - // ignore those events effectively narrowing mouse area a tiny bit at the edges - if (!this._charSizeService.hasValidSize - || coords[0] < 0 - || coords[1] < 0 - || coords[0] >= this._renderService.dimensions.css.canvas.width - || coords[1] >= this._renderService.dimensions.css.canvas.height) { + if (!this._charSizeService.hasValidSize) { return undefined; } - + coords[0] = Math.min(Math.max(coords[0], 0), this._renderService.dimensions.css.canvas.width - 1); + coords[1] = Math.min(Math.max(coords[1], 0), this._renderService.dimensions.css.canvas.height - 1); return { col: Math.floor(coords[0] / this._renderService.dimensions.css.cell.width), row: Math.floor(coords[1] / this._renderService.dimensions.css.cell.height), diff --git a/src/common/services/CoreMouseService.ts b/src/common/services/CoreMouseService.ts index d955370e..fd880a5d 100644 --- a/src/common/services/CoreMouseService.ts +++ b/src/common/services/CoreMouseService.ts @@ -3,7 +3,7 @@ * @license MIT */ import { IBufferService, ICoreService, ICoreMouseService } from 'common/services/Services'; -import { EventEmitter, IEvent } from 'common/EventEmitter'; +import { EventEmitter } from 'common/EventEmitter'; import { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types'; import { Disposable } from 'common/Lifecycle';