loleaflet/src/control/Control.LokDialog.js |   41 ++---------------------------
 loleaflet/src/layer/tile/TileLayer.js      |   14 ---------
 loleaflet/src/map/handler/Map.Keyboard.js  |   24 +++++++++-------
 3 files changed, 17 insertions(+), 62 deletions(-)

New commits:
commit e59ef72e19bf3001fe4dd361531cbc8715609a73
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Sat Dec 23 18:36:28 2017 +0530

    loleaflet: Unify dialog key handling logic with document's
    
    Change-Id: I422e813d76df9b52a860a05d09a89362dfb0b616
    Reviewed-on: https://gerrit.libreoffice.org/47070
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>
    Tested-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
index 4abf350b..82f69130 100644
--- a/loleaflet/src/control/Control.LokDialog.js
+++ b/loleaflet/src/control/Control.LokDialog.js
@@ -222,7 +222,9 @@ L.Control.LokDialog = L.Control.extend({
                        this._postWindowMouseEvent(lokEventType, 
this._toRawDlgId(strDlgId), e.offsetX, e.offsetY, 1, buttons, 0);
                }, this);
                L.DomEvent.on(dialogCanvas, 'keyup keypress keydown', 
function(e) {
-                       this._handleDialogKeyEvent(e, 
this._toRawDlgId(strDlgId));
+                       // _onKeyDown fn below requires this kind of structure 
but leaflet DomEvent.on doesn't pass it
+                       e.originalEvent = e;
+                       map['keyboard']._onKeyDown(e, 
L.bind(this._postWindowKeyboardEvent, this, this._toRawDlgId(strDlgId)));
                }, this);
                L.DomEvent.on(dialogCanvas, 'contextmenu', function() {
                        return false;
@@ -242,43 +244,6 @@ L.Control.LokDialog = L.Control.extend({
                                              ' char=' + charcode + ' key=' + 
keycode);
        },
 
-       _handleDialogKeyEvent: function(e, winid) {
-               var docLayer = this._map._docLayer;
-               this.modifier = 0;
-               var shift = e.shiftKey ? 
this._map['keyboard'].keyModifier.shift : 0;
-               var ctrl = e.ctrlKey ? this._map['keyboard'].keyModifier.ctrl : 
0;
-               var alt = e.altKey ? this._map['keyboard'].keyModifier.alt : 0;
-               var cmd = e.metaKey ? this._map['keyboard'].keyModifier.ctrl : 
0;
-               var location = e.location;
-               this.modifier = shift | ctrl | alt | cmd;
-
-               var charCode = e.charCode;
-               var keyCode = e.keyCode;
-               var unoKeyCode = this._map['keyboard']._toUNOKeyCode(keyCode);
-
-               if (this.modifier) {
-                       unoKeyCode |= this.modifier;
-                       if (e.type !== 'keyup') {
-                               this._postWindowKeyboardEvent(winid, 'input', 
charCode, unoKeyCode);
-                               return;
-                       }
-               }
-
-               if (e.type === 'keydown' && 
this._map['keyboard'].handleOnKeyDownKeys[keyCode]) {
-                       this._postWindowKeyboardEvent(winid, 'input', charCode, 
unoKeyCode);
-               }
-               else if (e.type === 'keypress' && 
(!this._map['keyboard'].handleOnKeyDownKeys[keyCode] || charCode !== 0)) {
-                       if (charCode === keyCode && charCode !== 13) {
-                               keyCode = 0;
-                               unoKeyCode = 
this._map['keyboard']._toUNOKeyCode(keyCode);
-                       }
-                       this._postWindowKeyboardEvent(winid, 'input', charCode, 
unoKeyCode);
-               }
-               else if (e.type === 'keyup') {
-                       this._postWindowKeyboardEvent(winid, 'up', charCode, 
unoKeyCode);
-               }
-       },
-
        _onDialogClose: function(dialogId, notifyBackend) {
                if (notifyBackend)
                        this._sendCloseWindow(dialogId);
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index de0091b5..16ac17b3 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -1334,20 +1334,6 @@ 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') {
                        if (keycode === 1030) { // PgUp
diff --git a/loleaflet/src/map/handler/Map.Keyboard.js 
b/loleaflet/src/map/handler/Map.Keyboard.js
index 1109b35f..23c55f21 100644
--- a/loleaflet/src/map/handler/Map.Keyboard.js
+++ b/loleaflet/src/map/handler/Map.Keyboard.js
@@ -237,11 +237,15 @@ L.Map.Keyboard = L.Handler.extend({
                return this.keymap[keyCode] || keyCode;
        },
 
-       _onKeyDown: function (e) {
+       _onKeyDown: function (e, postEventFn) {
                if (this._map.slideShow && this._map.slideShow.fullscreen) {
                        return;
                }
                var docLayer = this._map._docLayer;
+               if (!postEventFn) {
+                       // default is to post keyboard events on the document
+                       postEventFn = docLayer._postKeyboardEvent;
+               }
                this.modifier = 0;
                var shift = e.originalEvent.shiftKey ? this.keyModifier.shift : 
0;
                var ctrl = e.originalEvent.ctrlKey ? this.keyModifier.ctrl : 0;
@@ -311,7 +315,7 @@ L.Map.Keyboard = L.Handler.extend({
                if (this.modifier) {
                        unoKeyCode |= this.modifier;
                        if (e.type !== 'keyup' && (this.modifier !== shift || 
(keyCode === 32 && !docLayer._isCursorVisible))) {
-                               docLayer._postKeyboardEvent('input', charCode, 
unoKeyCode);
+                               postEventFn.call(this, 'input', charCode, 
unoKeyCode);
                                e.originalEvent.preventDefault();
                                return;
                        }
@@ -325,7 +329,7 @@ L.Map.Keyboard = L.Handler.extend({
                                this._bufferedTextInputEvent = null;
 
                                if (this._handleOnKeyDown(keyCode, 
this.modifier) && charCode === 0) {
-                                       docLayer._postKeyboardEvent('input', 
charCode, unoKeyCode);
+                                       postEventFn.call(this, 'input', 
charCode, unoKeyCode);
                                }
                        }
                        else if ((e.type === 'keypress' || e.type === 
'compositionend') &&
@@ -342,9 +346,11 @@ L.Map.Keyboard = L.Handler.extend({
                                }
                                if (e.type === 'compositionend') {
                                        // Set all keycodes to zero
-                                       docLayer._postKeyboardEvents('input', 
compCharCodes, Array.apply(null, 
Array(compCharCodes.length)).map(Number.prototype.valueOf, 0));
+                                       for (var i = 0; i < 
compCharCodes.length; ++i) {
+                                               postEventFn.call(this, 'input', 
compCharCodes[i], 0);
+                                       }
                                } else {
-                                       docLayer._postKeyboardEvent('input', 
charCode, unoKeyCode);
+                                       postEventFn.call(this, 'input', 
charCode, unoKeyCode);
                                }
 
                                this._keyHandled = true;
@@ -373,13 +379,11 @@ L.Map.Keyboard = L.Handler.extend({
                                if (!this._keyHandled && 
this._bufferedTextInputEvent) {
                                        var textInputData = 
this._bufferedTextInputEvent.originalEvent.data;
                                        charCode = e.originalEvent.keyCode;
-                                       var compCharCodes = [];
                                        for (var i = 0; i < 
textInputData.length; i++) {
-                                               
compCharCodes.push(textInputData[i].charCodeAt());
+                                               postEventFn.call(this, 'input', 
textInputData[i].charCodeAt(), 0);
                                        }
-                                       docLayer._postKeyboardEvents('input', 
compCharCodes, Array.apply(null, 
Array(compCharCodes.length)).map(Number.prototype.valueOf, 0));
                                }
-                               docLayer._postKeyboardEvent('up', charCode, 
unoKeyCode);
+                               postEventFn.call(this, 'up', charCode, 
unoKeyCode);
 
                                this._keyHandled = true;
                                this._bufferedTextInputEvent = null;
@@ -405,7 +409,7 @@ L.Map.Keyboard = L.Handler.extend({
                        else if (key in this._panKeys && 
e.originalEvent.shiftKey &&
                                        docLayer._selections.getLayers().length 
!== 0) {
                                // if there is a selection and the user wants 
to modify it
-                               docLayer._postKeyboardEvent('input', charCode, 
unoKeyCode);
+                               postEventFn.call(this, 'input', charCode, 
unoKeyCode);
                        }
                        else if (key in this._zoomKeys) {
                                map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 
1) * this._zoomKeys[key]);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to