From d54c40a3edb97fc57ec144fc65eb5b87760eefad Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Tue, 9 Nov 2021 06:46:00 -0800 Subject: [PATCH 1/5] Allow shift+wheel to bubble up the DOM Fixes #3550 --- src/browser/Terminal.ts | 2 +- src/browser/Viewport.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/browser/Terminal.ts b/src/browser/Terminal.ts index 24dc7af9..23122f3f 100644 --- a/src/browser/Terminal.ts +++ b/src/browser/Terminal.ts @@ -820,7 +820,7 @@ export class Terminal extends CoreTerminal implements ITerminal { // normal viewport scrolling // conditionally stop event, if the viewport still had rows to scroll within - if (!this.viewport!.onWheel(ev)) { + if (this.viewport!.onWheel(ev)) { return this.cancel(ev); } }, { passive: false })); diff --git a/src/browser/Viewport.ts b/src/browser/Viewport.ts index f73594bf..1dfc9e3e 100644 --- a/src/browser/Viewport.ts +++ b/src/browser/Viewport.ts @@ -220,7 +220,7 @@ export class Viewport extends Disposable implements IViewport { private _getPixelsScrolled(ev: WheelEvent): number { // Do nothing if it's not a vertical scroll event - if (ev.deltaY === 0) { + if (ev.deltaY === 0 || ev.shiftKey) { return 0; } @@ -241,7 +241,7 @@ export class Viewport extends Disposable implements IViewport { */ public getLinesScrolled(ev: WheelEvent): number { // Do nothing if it's not a vertical scroll event - if (ev.deltaY === 0) { + if (ev.deltaY === 0 || ev.shiftKey) { return 0; } From d7d85870d2efef1a18b270fb0f4a8206c890b99a Mon Sep 17 00:00:00 2001 From: Simon Lamon Date: Sat, 20 Nov 2021 17:33:38 +0000 Subject: [PATCH 2/5] remove headless include in benchmark projects --- test/benchmark/tsconfig.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/benchmark/tsconfig.json b/test/benchmark/tsconfig.json index cac99d90..2ebe2ebe 100644 --- a/test/benchmark/tsconfig.json +++ b/test/benchmark/tsconfig.json @@ -21,8 +21,7 @@ }, "include": [ "./**/*", - "../../typings/xterm.d.ts", - "../../out/**/*" + "../../typings/xterm.d.ts" ], "exclude": [ "../../**/*test.ts" From d85a57118ebe3c21e21a139e584d3db278be0512 Mon Sep 17 00:00:00 2001 From: Simon Lamon Date: Sat, 20 Nov 2021 17:48:45 +0000 Subject: [PATCH 3/5] remove headless include in benchmark projects --- addons/xterm-addon-serialize/benchmark/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/xterm-addon-serialize/benchmark/tsconfig.json b/addons/xterm-addon-serialize/benchmark/tsconfig.json index 42aaaa1b..bf5e335c 100644 --- a/addons/xterm-addon-serialize/benchmark/tsconfig.json +++ b/addons/xterm-addon-serialize/benchmark/tsconfig.json @@ -14,7 +14,7 @@ "SerializeAddon": ["../src/SerializeAddon"] } }, - "include": ["../**/*", "../../../typings/xterm.d.ts", "../../../out/**/*"], + "include": ["../**/*", "../../../typings/xterm.d.ts"], "exclude": ["../../../**/*test.ts", "../../**/*api.ts"], "references": [ { "path": "../../../src/common" }, From 070afc64c817e728603b8088d63f84c502970850 Mon Sep 17 00:00:00 2001 From: Labhansh Agrawal Date: Wed, 24 Nov 2021 12:53:10 +0000 Subject: [PATCH 4/5] trycatch characterJoiner handlers --- src/browser/services/CharacterJoinerService.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/browser/services/CharacterJoinerService.ts b/src/browser/services/CharacterJoinerService.ts index ea65c29b..9cef9fea 100644 --- a/src/browser/services/CharacterJoinerService.ts +++ b/src/browser/services/CharacterJoinerService.ts @@ -176,10 +176,20 @@ export class CharacterJoinerService implements ICharacterJoinerService { // At this point we already know that there is at least one joiner so // we can just pull its value and assign it directly rather than // merging it into an empty array, which incurs unnecessary writes. - const joinedRanges: [number, number][] = this._characterJoiners[0].handler(text); + let joinedRanges: [number, number][] = []; + try { + joinedRanges = this._characterJoiners[0].handler(text); + } catch (error) { + console.error(error); + } for (let i = 1; i < this._characterJoiners.length; i++) { // We merge any overlapping ranges across the different joiners - const joinerRanges = this._characterJoiners[i].handler(text); + let joinerRanges: [number, number][] = []; + try { + joinerRanges = this._characterJoiners[i].handler(text); + } catch (error) { + console.error(error); + } for (let j = 0; j < joinerRanges.length; j++) { CharacterJoinerService._mergeRanges(joinedRanges, joinerRanges[j]); } From d10d5be222173c1d21409959bc92b97d8506fcd2 Mon Sep 17 00:00:00 2001 From: Labhansh Agrawal Date: Thu, 25 Nov 2021 00:11:44 +0530 Subject: [PATCH 5/5] make requested changes --- src/browser/services/CharacterJoinerService.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/browser/services/CharacterJoinerService.ts b/src/browser/services/CharacterJoinerService.ts index 9cef9fea..ca4f1984 100644 --- a/src/browser/services/CharacterJoinerService.ts +++ b/src/browser/services/CharacterJoinerService.ts @@ -176,26 +176,25 @@ export class CharacterJoinerService implements ICharacterJoinerService { // At this point we already know that there is at least one joiner so // we can just pull its value and assign it directly rather than // merging it into an empty array, which incurs unnecessary writes. - let joinedRanges: [number, number][] = []; + let allJoinedRanges: [number, number][] = []; try { - joinedRanges = this._characterJoiners[0].handler(text); + allJoinedRanges = this._characterJoiners[0].handler(text); } catch (error) { console.error(error); } for (let i = 1; i < this._characterJoiners.length; i++) { // We merge any overlapping ranges across the different joiners - let joinerRanges: [number, number][] = []; try { - joinerRanges = this._characterJoiners[i].handler(text); + const joinerRanges = this._characterJoiners[i].handler(text); + for (let j = 0; j < joinerRanges.length; j++) { + CharacterJoinerService._mergeRanges(allJoinedRanges, joinerRanges[j]); + } } catch (error) { console.error(error); } - for (let j = 0; j < joinerRanges.length; j++) { - CharacterJoinerService._mergeRanges(joinedRanges, joinerRanges[j]); - } } - this._stringRangesToCellRanges(joinedRanges, lineData, startCol); - return joinedRanges; + this._stringRangesToCellRanges(allJoinedRanges, lineData, startCol); + return allJoinedRanges; } /**