loleaflet/src/map/Map.js | 4 ++-- loleaflet/src/map/handler/Map.Keyboard.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-)
New commits: commit 47699cd9084e4562dd7983f6c4d48cef74b6ba0b Author: Pranav Kant <pran...@collabora.co.uk> Date: Fri Nov 25 14:39:13 2016 +0530 tdf#98484: Handle spaces in chrome when IME is enabled When IME is enabled and user presses the space button, firefox sends 'compositionend' event with data = ' '. However, chrome instead fires 'textInput' event. Lets listen for 'textInput' event too and treat it like 'compositionend' event when data = ' '. Change-Id: Icbebdf2e89f608f790e6ce68c49f474364e7d5ab diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js index 75e20fc..40961cb 100644 --- a/loleaflet/src/map/Map.js +++ b/loleaflet/src/map/Map.js @@ -721,7 +721,7 @@ L.Map = L.Evented.extend({ L.DomEvent[onOff](this._container, 'click dblclick mousedown mouseup ' + 'mouseover mouseout mousemove contextmenu dragover drop ' + 'keydown keypress keyup trplclick qdrplclick', this._handleDOMEvent, this); - L.DomEvent[onOff](this._textArea, 'copy cut paste keydown keypress keyup compositionend', this._handleDOMEvent, this); + L.DomEvent[onOff](this._textArea, 'copy cut paste keydown keypress keyup compositionstart compositionupdate compositionend textInput', this._handleDOMEvent, this); if (this.options.trackResize && this._resizeDetector.contentWindow) { L.DomEvent[onOff](this._resizeDetector.contentWindow, 'resize', this._onResize, this); @@ -941,7 +941,7 @@ L.Map = L.Evented.extend({ }; if (e.type !== 'keypress' && e.type !== 'keyup' && e.type !== 'keydown' && e.type !== 'copy' && e.type !== 'cut' && e.type !== 'paste' && - e.type !== 'compositionend') { + e.type !== 'compositionstart' && e.type !== 'compositionupdate' && e.type !== 'compositionend' && e.type !== 'textInput') { data.containerPoint = target instanceof L.Marker ? this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); diff --git a/loleaflet/src/map/handler/Map.Keyboard.js b/loleaflet/src/map/handler/Map.Keyboard.js index e7b638e..1a6988b 100644 --- a/loleaflet/src/map/handler/Map.Keyboard.js +++ b/loleaflet/src/map/handler/Map.Keyboard.js @@ -171,13 +171,13 @@ L.Map.Keyboard = L.Handler.extend({ this._map.on('mousedown', this._onMouseDown, this); this._map.on('keydown keyup keypress', this._onKeyDown, this); - this._map.on('compositionend', this._onKeyDown, this); + this._map.on('compositionstart compositionupdate compositionend textInput', this._onKeyDown, this); }, removeHooks: function () { this._map.off('mousedown', this._onMouseDown, this); this._map.off('keydown keyup keypress', this._onKeyDown, this); - this._map.off('compositionend', this._onKeyDown, this); + this._map.off('compositionstart compositionupdate compositionend textInput', this._onKeyDown, this); }, _setPanOffset: function (pan) { @@ -285,6 +285,14 @@ L.Map.Keyboard = L.Handler.extend({ var charCode = e.originalEvent.charCode; var keyCode = e.originalEvent.keyCode; + + // Hack for making space work in chrome when IME is enabled + // Chrome doesn't fire compositionend event when IME is enabled and user presses <space>. + // However, it sends 'textInput' event in such a case. treat it like 'compositionend' events + if (e.type === 'textInput' && e.originalEvent.data === ' ') { + e.type = 'compositionend'; + } + if (e.type === 'compositionend') { var compCharCodes = []; for (var i = 0; i < e.originalEvent.data.length; i++) { @@ -357,6 +365,7 @@ L.Map.Keyboard = L.Handler.extend({ map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]); } } + L.DomEvent.stopPropagation(e.originalEvent); }, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits