loleaflet/src/map/handler/Map.Keyboard.js | 42 +++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 12 deletions(-)
New commits: commit 6ead2c072f92b81c977fa35c4e2b870ad3222fd1 Author: Mihai Varga <mihai.va...@collabora.com> Date: Thu Sep 24 19:46:15 2015 +0200 loleaflet: handle shift + arrow keys selection diff --git a/loleaflet/src/map/handler/Map.Keyboard.js b/loleaflet/src/map/handler/Map.Keyboard.js index b98c495..e54fbb0 100644 --- a/loleaflet/src/map/handler/Map.Keyboard.js +++ b/loleaflet/src/map/handler/Map.Keyboard.js @@ -10,6 +10,13 @@ L.Map.mergeOptions({ L.Map.Keyboard = L.Handler.extend({ + keyModifier: { + shift: 4096, + ctrl: 8192, + alt: 16384, + ctrlMac: 32768 + }, + keymap: { 8 : 1283, // backspace : BACKSPACE 9 : 1282, // tab : TAB @@ -129,8 +136,8 @@ L.Map.Keyboard = L.Handler.extend({ _setPanOffset: function (pan) { var keys = this._panKeys = {}, - codes = this.navigationKeyCodes, - i, len; + codes = this.navigationKeyCodes, + i, len; for (i = 0, len = codes.left.length; i < len; i++) { keys[codes.left[i]] = [-1 * pan, 0]; @@ -148,8 +155,8 @@ L.Map.Keyboard = L.Handler.extend({ _setZoomOffset: function (zoom) { var keys = this._zoomKeys = {}, - codes = this.navigationKeyCodes, - i, len; + codes = this.navigationKeyCodes, + i, len; for (i = 0, len = codes.zoomIn.length; i < len; i++) { keys[codes.zoomIn[i]] = zoom; @@ -172,7 +179,6 @@ L.Map.Keyboard = L.Handler.extend({ }, _onKeyDown: function (e) { - var docLayer = this._map._docLayer; if (e.originalEvent.ctrlKey) { // we prepare for a copy event docLayer._textArea.value = 'dummy text'; @@ -181,24 +187,31 @@ L.Map.Keyboard = L.Handler.extend({ return; } + var docLayer = this._map._docLayer; + var charCode = e.originalEvent.charCode; + var keyCode = e.originalEvent.keyCode; + var unoKeyCode = this._toUNOKeyCode(keyCode); + + if (e.originalEvent.shiftKey) { + unoKeyCode |= this.keyModifier.shift; + } + if (docLayer._permission === 'edit') { docLayer._resetPreFetching(); - var charCode = e.originalEvent.charCode; - var keyCode = e.originalEvent.keyCode; if (e.type === 'keydown' && this.handleOnKeyDown[keyCode] && charCode === 0) { - docLayer._postKeyboardEvent('input', charCode, this._toUNOKeyCode(keyCode)); + docLayer._postKeyboardEvent('input', charCode, unoKeyCode); } else if (e.type === 'keypress' && - (!this.handleOnKeyDown[keyCode] || charCode !== 0)) { + (!this.handleOnKeyDown[keyCode] || charCode !== 0)) { if (charCode === keyCode && charCode !== 13) { // Chrome sets keyCode = charCode for printable keys // while LO requires it to be 0 keyCode = 0; } - docLayer._postKeyboardEvent('input', charCode, this._toUNOKeyCode(keyCode)); + docLayer._postKeyboardEvent('input', charCode, unoKeyCode); } else if (e.type === 'keyup') { - docLayer._postKeyboardEvent('up', charCode, this._toUNOKeyCode(keyCode)); + docLayer._postKeyboardEvent('up', charCode, unoKeyCode); } if (keyCode === 9) { // tab would change focus to other DOM elements @@ -208,12 +221,17 @@ L.Map.Keyboard = L.Handler.extend({ else if (e.type === 'keydown') { var key = e.originalEvent.keyCode; var map = this._map; - if (key in this._panKeys) { + if (key in this._panKeys && !e.originalEvent.shiftKey) { if (map._panAnim && map._panAnim._inProgress) { return; } map.fire('scrollby', {x: this._panKeys[key][0], y: this._panKeys[key][1]}); } + 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); + } 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 http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits