fix #4582
This commit is contained in:
@@ -747,8 +747,10 @@ export class Terminal extends CoreTerminal implements ITerminal {
|
|||||||
|
|
||||||
if (!(events & CoreMouseEventType.UP)) {
|
if (!(events & CoreMouseEventType.UP)) {
|
||||||
this._document!.removeEventListener('mouseup', requestedEvents.mouseup!);
|
this._document!.removeEventListener('mouseup', requestedEvents.mouseup!);
|
||||||
|
el.removeEventListener('mouseup', requestedEvents.mouseup!);
|
||||||
requestedEvents.mouseup = null;
|
requestedEvents.mouseup = null;
|
||||||
} else if (!requestedEvents.mouseup) {
|
} else if (!requestedEvents.mouseup) {
|
||||||
|
el.addEventListener('mouseup', eventListeners.mouseup);
|
||||||
requestedEvents.mouseup = eventListeners.mouseup;
|
requestedEvents.mouseup = eventListeners.mouseup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,17 +31,11 @@ export class MouseService implements IMouseService {
|
|||||||
|
|
||||||
public getMouseReportCoords(event: MouseEvent, element: HTMLElement): { col: number, row: number, x: number, y: number } | undefined {
|
public getMouseReportCoords(event: MouseEvent, element: HTMLElement): { col: number, row: number, x: number, y: number } | undefined {
|
||||||
const coords = getCoordsRelativeToElement(window, event, element);
|
const coords = getCoordsRelativeToElement(window, event, element);
|
||||||
|
if (!this._charSizeService.hasValidSize) {
|
||||||
// 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) {
|
|
||||||
return undefined;
|
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 {
|
return {
|
||||||
col: Math.floor(coords[0] / this._renderService.dimensions.css.cell.width),
|
col: Math.floor(coords[0] / this._renderService.dimensions.css.cell.width),
|
||||||
row: Math.floor(coords[1] / this._renderService.dimensions.css.cell.height),
|
row: Math.floor(coords[1] / this._renderService.dimensions.css.cell.height),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
import { IBufferService, ICoreService, ICoreMouseService } from 'common/services/Services';
|
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 { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types';
|
||||||
import { Disposable } from 'common/Lifecycle';
|
import { Disposable } from 'common/Lifecycle';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user