[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