[Libreoffice-commits] online.git: loleaflet/src
Mihai Varga
mihai.varga at collabora.com
Tue Sep 29 00:32:05 PDT 2015
loleaflet/src/map/handler/Map.Keyboard.js | 42 +++++++++++++++++++++---------
1 file changed, 30 insertions(+), 12 deletions(-)
New commits:
commit 6ead2c072f92b81c977fa35c4e2b870ad3222fd1
Author: Mihai Varga <mihai.varga at 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]);
}
More information about the Libreoffice-commits
mailing list