loleaflet/src/control/Control.MobileInput.js |   25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

New commits:
commit 10ff9c1a65a7e333d3aa6f2811d1480fa53fe75e
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Tue May 21 15:57:36 2019 +0300
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Tue May 21 15:58:49 2019 +0300

    tdf#125410: Handle pasting of text/plain strings into the iOS app
    
    Also, initialise this._keyHandled as true in L.Control.MobileInput, as
    that is the value it has between key event sequences, so presumably it
    should be so before the first key is hit, too.
    
    Change-Id: Ie67e9fcdd14871e76f9d9487c14f03ae54476e60

diff --git a/loleaflet/src/control/Control.MobileInput.js 
b/loleaflet/src/control/Control.MobileInput.js
index ea3bccbb7..e893a54ee 100644
--- a/loleaflet/src/control/Control.MobileInput.js
+++ b/loleaflet/src/control/Control.MobileInput.js
@@ -21,6 +21,11 @@ L.Control.MobileInput = L.Control.extend({
                this._currentKeysDown = {};
                this._ignoreKeypress = false;
                this._isMobileSafariOriOSApp = window.ThisIsTheiOSApp || 
navigator.platform === 'iPad' || navigator.platform === 'iPhone';
+
+               // The value of _keyHandled after a complete input sequence of 
a plain character,
+               // before the next character input, is true, so surely it 
should then be true from
+               // the start, before the first character input?
+               this._keyHandled = true;
        },
 
        onAdd: function () {
@@ -105,6 +110,7 @@ L.Control.MobileInput = L.Control.extend({
                L.DomEvent.on(this._textArea, stopEvents, 
L.DomEvent.stopPropagation)
                        .on(this._textArea, 'keydown keypress keyup', 
this.onKeyEvents, this)
                        .on(this._textArea, 'textInput', this.onTextInput, this)
+                       .on(this._textArea, 'paste', this.onPaste, this)
                        .on(this._textArea, 'focus', this.onGotFocus, this)
                        .on(this._textArea, 'blur', this.onLostFocus, this);
                if (!this._isMobileSafariOriOSApp)
@@ -241,7 +247,7 @@ L.Control.MobileInput = L.Control.extend({
        },
 
        onTextInput: function (e) {
-               // console.log('==> onTextInput: _keyHandled=' + 
this._keyHandled);
+               // console.log('==> onTextInput: "' + e.data + '" _keyHandled=' 
+ this._keyHandled);
                if (!this._keyHandled) {
                        this._textData = e.data;
                        this._textArea.value = '';
@@ -250,6 +256,23 @@ L.Control.MobileInput = L.Control.extend({
                L.DomEvent.stopPropagation(e);
        },
 
+       onPaste: function (e) {
+               var i;
+               for (i = 0; i < e.clipboardData.items.length; ++i) {
+                       if (e.clipboardData.items[i].kind === 'string' && 
e.clipboardData.items[i].type === 'text/plain') {
+                               var map = this._map;
+                               e.clipboardData.items[i].getAsString(function 
(s) {
+                                       var k;
+                                       for (k = 0; k < s.length; ++k) {
+                                               
map._docLayer._postKeyboardEvent('input', s[k].charCodeAt(), 0);
+                                               
map._docLayer._postKeyboardEvent('up', s[k].charCodeAt(), 0);
+                                       }
+                               });
+                               break;
+                       }
+               }
+       },
+
        onInput: function (e) {
                // console.log('==> onInput: inputType=' + e.inputType);
                var backSpace = this._map.keyboard._toUNOKeyCode(8);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to