Skip to content

Commit 94a2646

Browse files
authored
Merge pull request #5591 from Tyriar/5586
Ensure mouse listeners are removed on dispose
2 parents c97abce + cb35d1b commit 94a2646

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

src/browser/CoreBrowserTerminal.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,8 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal {
636636

637637
// send event to CoreMouseService
638638
function sendEvent(ev: MouseEvent | WheelEvent): boolean {
639-
// get mouse coordinates
640-
const pos = self._mouseService!.getMouseReportCoords(ev, self.screenElement!);
639+
// Get mouse coordinates
640+
const pos = self._mouseService?.getMouseReportCoords(ev, self.screenElement!);
641641
if (!pos) {
642642
return false;
643643
}
@@ -804,6 +804,16 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal {
804804
// force initial onProtocolChange so we dont miss early mouse requests
805805
this.coreMouseService.activeProtocol = this.coreMouseService.activeProtocol;
806806

807+
// Ensure document-level listeners are removed on dispose
808+
this._register(toDisposable(() => {
809+
if (requestedEvents.mouseup) {
810+
this._document!.removeEventListener('mouseup', requestedEvents.mouseup);
811+
}
812+
if (requestedEvents.mousedrag) {
813+
this._document!.removeEventListener('mousemove', requestedEvents.mousedrag);
814+
}
815+
}));
816+
807817
/**
808818
* "Always on" event listeners.
809819
*/

0 commit comments

Comments
 (0)