[Libreoffice-commits] online.git: loleaflet/src

Pranav Kant pranavk at collabora.co.uk
Fri Nov 25 04:41:13 UTC 2016


 loleaflet/src/layer/tile/TileLayer.js     |   14 ++++++++++++++
 loleaflet/src/map/handler/Map.Keyboard.js |   12 ++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

New commits:
commit e9dbfa395381e942eff2e14f62aab61382b82e8d
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Nov 25 10:05:49 2016 +0530

    tdf#98484: IME support - handle full string in compositions
    
    Parse the compositionend event's string, convert each into a char
    code and pass them individually to server.
    
    Change-Id: If79d538ccaebaa29749a5ca48a1f6ed5e0689ed5

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 10160b2..d47a6e5 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -1202,6 +1202,20 @@ L.TileLayer = L.GridLayer.extend({
 		}
 	},
 
+	_postKeyboardEvents: function(type, charcodes, keycodes) {
+		// Both are arrays
+		if (typeof(charcodes.length) !== 'number' && typeof(keycodes.length) !== 'number')
+			return;
+
+		// both have same length
+		if (charcodes.length !== keycodes.length)
+			return;
+
+		for (var i = 0; i < charcodes.length; i++) {
+			this._postKeyboardEvent(type, charcodes[i], keycodes[i]);
+		}
+	},
+
 	_postKeyboardEvent: function(type, charcode, keycode) {
 		if (this._docType === 'spreadsheet' && this._prevCellCursor && type === 'input')
 		{
diff --git a/loleaflet/src/map/handler/Map.Keyboard.js b/loleaflet/src/map/handler/Map.Keyboard.js
index 6e64ae4..e7b638e 100644
--- a/loleaflet/src/map/handler/Map.Keyboard.js
+++ b/loleaflet/src/map/handler/Map.Keyboard.js
@@ -286,7 +286,10 @@ L.Map.Keyboard = L.Handler.extend({
 		var charCode = e.originalEvent.charCode;
 		var keyCode = e.originalEvent.keyCode;
 		if (e.type === 'compositionend') {
-			charCode = keyCode = e.originalEvent.data.charCodeAt();
+			var compCharCodes = [];
+			for (var i = 0; i < e.originalEvent.data.length; i++) {
+				compCharCodes.push(e.originalEvent.data[i].charCodeAt());
+			}
 		}
 		var unoKeyCode = this._toUNOKeyCode(keyCode);
 
@@ -317,7 +320,12 @@ L.Map.Keyboard = L.Handler.extend({
 					// key press times will be paired with the invalidation messages
 					docLayer._debugKeypressQueue.push(+new Date());
 				}
-				docLayer._postKeyboardEvent('input', charCode, unoKeyCode);
+				if (e.type === 'compositionend') {
+					// Set all keycodes to zero
+					docLayer._postKeyboardEvents('input', compCharCodes, Array.apply(null, Array(compCharCodes.length)).map(Number.prototype.valueOf, 0));
+				} else {
+					docLayer._postKeyboardEvent('input', charCode, unoKeyCode);
+				}
 			}
 			else if (e.type === 'keyup') {
 				docLayer._postKeyboardEvent('up', charCode, unoKeyCode);


More information about the Libreoffice-commits mailing list