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 <pran...@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);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to