[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-3' - 2 commits - loleaflet/src

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Oct 3 23:05:55 UTC 2018


 loleaflet/src/control/Control.MobileInput.js |   35 ++++++++++++++++-----------
 1 file changed, 22 insertions(+), 13 deletions(-)

New commits:
commit f42e0bb4d1c99c1d229a638e59061ef7985d01e8
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Oct 3 21:52:59 2018 +0200
Commit:     Aron Budea <aron.budea at collabora.com>
CommitDate: Thu Oct 4 01:05:46 2018 +0200

    android chrome: Stop composing when we get an actual key event.
    
    So that it is possible to press Enter while still in composition.
    It is necessary to stop the composing itself, because otherwise the word
    gets duplicated on the new line as soon as the user presses a key.
    
    Change-Id: I78951a423715e71533f1a73d5bbe3b0f0f05e6cd
    Reviewed-on: https://gerrit.libreoffice.org/61334
    Reviewed-by: Aron Budea <aron.budea at collabora.com>
    Tested-by: Aron Budea <aron.budea at collabora.com>

diff --git a/loleaflet/src/control/Control.MobileInput.js b/loleaflet/src/control/Control.MobileInput.js
index 3fab3bf56..94084371b 100644
--- a/loleaflet/src/control/Control.MobileInput.js
+++ b/loleaflet/src/control/Control.MobileInput.js
@@ -88,10 +88,19 @@ L.Control.MobileInput = L.Control.extend({
 		    docLayer = this._map._docLayer,
 		    unoKeyCode = handler._toUNOKeyCode(keyCode);
 
+		console.log('onKeyEvent: e.type === ' + e.type);
+		console.log('onKeyEvent: e.keyCode === "' + e.keyCode + '"');
+		console.log('onKeyEvent: e.charCode === "' + e.charCode + '"');
 		this._keyHandled = this._keyHandled || false;
 		if (this._isComposing) {
+			if (keyCode === 229 && charCode === 0) {
+				return;
+			}
+			// stop the composing - so that we handle eg. Enter even during
+			// composition
+			this._isComposing = false;
 			this._lastInput = null;
-			return;
+			this._textArea.value = '';
 		}
 
 		docLayer._resetPreFetching();
commit f176bb1e81b5f3769cb56752c7102f93f2eca024
Author:     Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Oct 3 19:46:07 2018 +0200
Commit:     Aron Budea <aron.budea at collabora.com>
CommitDate: Thu Oct 4 01:05:37 2018 +0200

    android chrome: We have to delete the interim results sometimes.
    
    When we are autocorrecting a word, we get a deleteContentBackward event;
    in that case we have to delete everything we have composed so far.
    
    Change-Id: I36f3d1afcb9b74ac75dee7d64832cc5a3d346045
    Reviewed-on: https://gerrit.libreoffice.org/61333
    Reviewed-by: Aron Budea <aron.budea at collabora.com>
    Tested-by: Aron Budea <aron.budea at collabora.com>

diff --git a/loleaflet/src/control/Control.MobileInput.js b/loleaflet/src/control/Control.MobileInput.js
index 25b0addff..3fab3bf56 100644
--- a/loleaflet/src/control/Control.MobileInput.js
+++ b/loleaflet/src/control/Control.MobileInput.js
@@ -128,14 +128,13 @@ L.Control.MobileInput = L.Control.extend({
 
 	onCompEvents: function (e) {
 		var map = this._map;
+		console.log('onCompEvents: e.type === ' + e.type);
+		console.log('onCompEvents: e.data === "' + e.data + '"');
 		if (e.type === 'compositionstart' || e.type === 'compositionupdate') {
 			this._isComposing = true; // we are starting composing with IME
-			var txt = '';
-			for (var i = 0; i < e.data.length; i++) {
-				txt += e.data[i];
-			}
-			if (txt) {
-				map._docLayer._postCompositionEvent(0, 'input', txt);
+			this._composingData = e.data; // cache what we have composed so far
+			if (e.data) {
+				map._docLayer._postCompositionEvent(0, 'input', e.data);
 			}
 		}
 
@@ -152,11 +151,6 @@ L.Control.MobileInput = L.Control.extend({
 			// code 229 when hitting space (as with all composiiton events)
 			// with addition to 'textinput' event, in which we only see that
 			// space was entered.
-			//
-			// TODO: Maybe make sure this is only triggered when keydown has
-			// 229 code. Also we need to detect that composition was overriden
-			// (part or whole word deleted) with the spell-checked word. (for
-			// example: enter 'tar' and with spell-check correct that to 'rat')
 			var data = e.data;
 			if (data.length == 1 && data[0] === ' ') {
 				map._docLayer._postKeyboardEvent('input', data[0].charCodeAt(), 0);
@@ -169,7 +163,13 @@ L.Control.MobileInput = L.Control.extend({
 	onInput: function (e) {
 		var backSpace = this._map.keyboard._toUNOKeyCode(8);
 		if (e.inputType && e.inputType === 'deleteContentBackward' && this._lastInput !== backSpace) {
-			this._map._docLayer._postKeyboardEvent('input', 0, backSpace);
+			// this means we need to delete the entire interim composition;
+			// let's issue backspace that many times
+			if (this._composingData) {
+				for (var i = 0; i < this._composingData.length; ++i) {
+					this._map._docLayer._postKeyboardEvent('input', 0, backSpace);
+				}
+			}
 		}
 		L.DomEvent.stopPropagation(e);
 	}


More information about the Libreoffice-commits mailing list