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