From 413a885b5eab4cfea654b237e962acadf70ffb6f Mon Sep 17 00:00:00 2001 From: Ian K Date: Mon, 8 Aug 2022 12:41:12 -0500 Subject: [PATCH 1/2] handle if the newValue.length is less than the old value by deleting --- src/browser/input/CompositionHelper.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/browser/input/CompositionHelper.ts b/src/browser/input/CompositionHelper.ts index 61051b58..09d69d3a 100644 --- a/src/browser/input/CompositionHelper.ts +++ b/src/browser/input/CompositionHelper.ts @@ -5,6 +5,7 @@ import { IRenderService } from 'browser/services/Services'; import { IBufferService, ICoreService, IOptionsService } from 'common/services/Services'; +import { C0 } from 'common/data/EscapeSequences'; interface IPosition { start: number; @@ -186,11 +187,17 @@ export class CompositionHelper { // Ignore if a composition has started since the timeout if (!this._isComposing) { const newValue = this._textarea.value; + const diff = newValue.replace(oldValue, ''); - if (diff.length > 0) { - this._dataAlreadySent = diff; + + this._dataAlreadySent = diff; + + if (newValue.length > oldValue.length) { this._coreService.triggerDataEvent(diff, true); + } else if (newValue.length < oldValue.length) { + this._coreService.triggerDataEvent(`${C0.DEL}`, true); } + } }, 0); } From 531260269245f7c1bba32836474625cbf0520abc Mon Sep 17 00:00:00 2001 From: Ian K Date: Mon, 8 Aug 2022 17:02:21 -0500 Subject: [PATCH 2/2] handle same length case --- src/browser/input/CompositionHelper.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/browser/input/CompositionHelper.ts b/src/browser/input/CompositionHelper.ts index 09d69d3a..39ccaa23 100644 --- a/src/browser/input/CompositionHelper.ts +++ b/src/browser/input/CompositionHelper.ts @@ -196,6 +196,8 @@ export class CompositionHelper { this._coreService.triggerDataEvent(diff, true); } else if (newValue.length < oldValue.length) { this._coreService.triggerDataEvent(`${C0.DEL}`, true); + } else if ((newValue.length === oldValue.length) && (newValue !== oldValue)) { + this._coreService.triggerDataEvent(newValue, true); } }