[Libreoffice-commits] online.git: loleaflet/src

Mihai Varga mihai.varga at collabora.com
Thu Jul 16 05:25:00 PDT 2015


 loleaflet/src/layer/tile/TileLayer.js     |  132 -----------------
 loleaflet/src/map/handler/Map.Keyboard.js |  226 ++++++++++++++++--------------
 2 files changed, 122 insertions(+), 236 deletions(-)

New commits:
commit 11063ea843869226fb94ae739cd098edc7df2061
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Thu Jul 16 15:23:42 2015 +0300

    loleaflet: moved keyboard handler from TileLayer.js -> Map.Keyboard.js

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index b5c9e64..e7af468 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -27,91 +27,6 @@ L.TileLayer = L.GridLayer.extend({
 		crossOrigin: false
 	},
 
-	keymap: {
-		8   : 1283, // backspace	: BACKSPACE
-		9   : 1282, // tab 		: TAB
-		13  : 1280, // enter 		: RETURN
-		16  : null, // shift		: UNKOWN
-		17  : null, // ctrl		: UNKOWN
-		18  : null, // alt		: UNKOWN
-		19  : null, // pause/break	: UNKOWN
-		20  : null, // caps lock	: UNKOWN
-		27  : 1281, // escape		: ESCAPE
-		32  : 1284, // space		: SPACE
-		33  : 1030, // page up		: PAGEUP
-		34  : 1031, // page down	: PAGEDOWN
-		35  : 1029, // end		: END
-		36  : 1028, // home		: HOME
-		37  : 1026, // left arrow	: LEFT
-		38  : 1025, // up arrow		: UP
-		39  : 1027, // right arrow	: RIGHT
-		40  : 1024, // down arrow	: DOWN
-		45  : 1285, // insert		: INSERT
-		46  : 1286, // delete		: DELETE
-		91  : null, // left window key	: UNKOWN
-		92  : null, // right window key	: UNKOWN
-		93  : null, // select key	: UNKOWN
-		96  : 256,  // numpad 0		: NUM0
-		97  : 257,  // numpad 1		: NUM1
-		98  : 258,  // numpad 2		: NUM2
-		99  : 259,  // numpad 3		: NUM3
-		100 : 260,  // numpad 4		: NUM4
-		101 : 261,  // numpad 5		: NUM5
-		102 : 262,  // numpad 6		: NUM6
-		103 : 263,  // numpad 7		: NUM7
-		104 : 264,  // numpad 8		: NUM8
-		105 : 265,  // numpad 9		: NUM9
-		106 : 1289, // multiply		: MULTIPLY
-		107 : 1287, // add		: ADD
-		109 : 1288, // subtract		: SUBTRACT
-		110 : 1309, // decimal point	: DECIMAL
-		111 : 1290, // divide		: DIVIDE
-		112 : 768,  // f1		: F1
-		113 : 769,  // f2		: F2
-		114 : 770,  // f3		: F3
-		115 : 771,  // f4		: F4
-		116 : 772,  // f5		: F5
-		117 : 773,  // f6		: F6
-		118 : 774,  // f7		: F7
-		119 : 775,  // f8		: F8
-		120 : 776,  // f9		: F9
-		121 : 777,  // f10		: F10
-		122 : 778,  // f11		: F11
-		144 : 1313, // num lock		: NUMLOCK
-		145 : 1314, // scroll lock	: SCROLLLOCK
-		186 : 1317, // semi-colon	: SEMICOLON
-		187 : 1295, // equal sign	: EQUAL
-		188 : 1292, // comma		: COMMA
-		189 : 5,    // dash		: DASH
-		190 : null, // period		: UNKOWN
-		191 : null, // forward slash	: UNKOWN
-		192 : null, // grave accent	: UNKOWN
-		219 : null, // open bracket	: UNKOWN
-		220 : null, // back slash	: UNKOWN
-		221 : null, // close bracket	: UNKOWN
-		222 : null  // single quote	: UNKOWN
-	},
-
-	handleOnKeyDown: {
-		// these keys need to be handled on keydown in order for them
-		// to work on chrome
-		8   : true, // backspace
-		9   : true, // tab
-		19  : true, // pause/break
-		20  : true, // caps lock
-		27  : true, // escape
-		33  : true, // page up
-		34  : true, // page down
-		35  : true, // end
-		36  : true, // home
-		37  : true, // left arrow
-		38  : true, // up arrow
-		39  : true, // right arrow
-		40  : true, // down arrow
-		45  : true, // insert
-		46  : true // delete
-	},
-
 	initialize: function (url, options) {
 
 		this._url = url;
@@ -211,10 +126,7 @@ L.TileLayer = L.GridLayer.extend({
 		var events = {
 			viewreset: this._viewReset,
 			movestart: this._moveStart,
-			moveend: this._move,
-			keydown: this._signalKey,
-			keypress: this._signalKey,
-			keyup: this._signalKey
+			moveend: this._move
 		};
 
 		if (!this.options.updateWhenIdle) {
@@ -875,48 +787,6 @@ L.TileLayer = L.GridLayer.extend({
 		this._mouseEventsQueue = [];
 	},
 
-	// Convert javascript key codes to UNO key codes.
-	_toUNOKeyCode: function (keyCode) {
-		return this.keymap[keyCode] || keyCode;
-	},
-
-	// Receives a key press or release event.
-	_signalKey: function (e) {
-		if (e.originalEvent.ctrlKey) {
-			// we prepare for a copy event
-			this._textArea.value = 'dummy text';
-			this._textArea.focus();
-			this._textArea.select();
-			return;
-		}
-
-		if (this._permission !== 'edit') {
-			return;
-		}
-
-		var charCode = e.originalEvent.charCode;
-		var keyCode = e.originalEvent.keyCode;
-		if (e.type === 'keydown' && this.handleOnKeyDown[keyCode] && charCode === 0) {
-			this._postKeyboardEvent('input', charCode, this._toUNOKeyCode(keyCode));
-		}
-		else if (e.type === 'keypress' &&
-				(!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;
-			}
-			this._postKeyboardEvent('input', charCode, this._toUNOKeyCode(keyCode));
-		}
-		else if (e.type === 'keyup') {
-			this._postKeyboardEvent('up', charCode, this._toUNOKeyCode(keyCode));
-		}
-		if (keyCode === 9) {
-			// tab would change focus to other DOM elements
-			e.originalEvent.preventDefault();
-		}
-	},
-
 	// Is rRectangle empty?
 	_isEmptyRectangle: function (aBounds) {
 		return aBounds.getSouthWest().equals(new L.LatLng(0, 0)) && aBounds.getNorthEast().equals(new L.LatLng(0, 0));
diff --git a/loleaflet/src/map/handler/Map.Keyboard.js b/loleaflet/src/map/handler/Map.Keyboard.js
index e524ce8..084fc03 100644
--- a/loleaflet/src/map/handler/Map.Keyboard.js
+++ b/loleaflet/src/map/handler/Map.Keyboard.js
@@ -4,26 +4,97 @@
 
 L.Map.mergeOptions({
 	keyboard: true,
-	keyboardPanOffset: 80,
-	keyboardZoomOffset: 1
 });
 
 L.Map.Keyboard = L.Handler.extend({
 
-	keyCodes: {
-		left:    [37],
-		right:   [39],
-		down:    [40],
-		up:      [38],
-		zoomIn:  [187, 107, 61, 171],
-		zoomOut: [189, 109, 173]
+	keymap: {
+		8   : 1283, // backspace	: BACKSPACE
+		9   : 1282, // tab 		: TAB
+		13  : 1280, // enter 		: RETURN
+		16  : null, // shift		: UNKOWN
+		17  : null, // ctrl		: UNKOWN
+		18  : null, // alt		: UNKOWN
+		19  : null, // pause/break	: UNKOWN
+		20  : null, // caps lock	: UNKOWN
+		27  : 1281, // escape		: ESCAPE
+		32  : 1284, // space		: SPACE
+		33  : 1030, // page up		: PAGEUP
+		34  : 1031, // page down	: PAGEDOWN
+		35  : 1029, // end		: END
+		36  : 1028, // home		: HOME
+		37  : 1026, // left arrow	: LEFT
+		38  : 1025, // up arrow		: UP
+		39  : 1027, // right arrow	: RIGHT
+		40  : 1024, // down arrow	: DOWN
+		45  : 1285, // insert		: INSERT
+		46  : 1286, // delete		: DELETE
+		91  : null, // left window key	: UNKOWN
+		92  : null, // right window key	: UNKOWN
+		93  : null, // select key	: UNKOWN
+		96  : 256,  // numpad 0		: NUM0
+		97  : 257,  // numpad 1		: NUM1
+		98  : 258,  // numpad 2		: NUM2
+		99  : 259,  // numpad 3		: NUM3
+		100 : 260,  // numpad 4		: NUM4
+		101 : 261,  // numpad 5		: NUM5
+		102 : 262,  // numpad 6		: NUM6
+		103 : 263,  // numpad 7		: NUM7
+		104 : 264,  // numpad 8		: NUM8
+		105 : 265,  // numpad 9		: NUM9
+		106 : 1289, // multiply		: MULTIPLY
+		107 : 1287, // add		: ADD
+		109 : 1288, // subtract		: SUBTRACT
+		110 : 1309, // decimal point	: DECIMAL
+		111 : 1290, // divide		: DIVIDE
+		112 : 768,  // f1		: F1
+		113 : 769,  // f2		: F2
+		114 : 770,  // f3		: F3
+		115 : 771,  // f4		: F4
+		116 : 772,  // f5		: F5
+		117 : 773,  // f6		: F6
+		118 : 774,  // f7		: F7
+		119 : 775,  // f8		: F8
+		120 : 776,  // f9		: F9
+		121 : 777,  // f10		: F10
+		122 : 778,  // f11		: F11
+		144 : 1313, // num lock		: NUMLOCK
+		145 : 1314, // scroll lock	: SCROLLLOCK
+		186 : 1317, // semi-colon	: SEMICOLON
+		187 : 1295, // equal sign	: EQUAL
+		188 : 1292, // comma		: COMMA
+		189 : 5,    // dash		: DASH
+		190 : null, // period		: UNKOWN
+		191 : null, // forward slash	: UNKOWN
+		192 : null, // grave accent	: UNKOWN
+		219 : null, // open bracket	: UNKOWN
+		220 : null, // back slash	: UNKOWN
+		221 : null, // close bracket	: UNKOWN
+		222 : null  // single quote	: UNKOWN
+	},
+
+	handleOnKeyDown: {
+		// these keys need to be handled on keydown in order for them
+		// to work on chrome
+		8   : true, // backspace
+		9   : true, // tab
+		19  : true, // pause/break
+		20  : true, // caps lock
+		27  : true, // escape
+		33  : true, // page up
+		34  : true, // page down
+		35  : true, // end
+		36  : true, // home
+		37  : true, // left arrow
+		38  : true, // up arrow
+		39  : true, // right arrow
+		40  : true, // down arrow
+		45  : true, // insert
+		46  : true // delete
 	},
 
 	initialize: function (map) {
 		this._map = map;
-
-		this._setPanOffset(map.options.keyboardPanOffset);
-		this._setZoomOffset(map.options.keyboardZoomOffset);
 	},
 
 	addHooks: function () {
@@ -34,113 +105,58 @@ L.Map.Keyboard = L.Handler.extend({
 			container.tabIndex = '0';
 		}
 
-		L.DomEvent.on(container, {
-			focus: this._onFocus,
-			blur: this._onBlur,
-			mousedown: this._onMouseDown
-		}, this);
-
-		this._map.on({
-			focus: this._addHooks,
-			blur: this._removeHooks
-		}, this);
-	},
-
-	removeHooks: function () {
-		this._removeHooks();
-
-		L.DomEvent.off(this._map._container, {
-			focus: this._onFocus,
-			blur: this._onBlur,
-			mousedown: this._onMouseDown
-		}, this);
-
-		this._map.off({
-			focus: this._addHooks,
-			blur: this._removeHooks
-		}, this);
+		this._map.on('mousedown', this._onMouseDown, this);
+		this._map.on('keydown keyup keypress', this._onKeyDown, this);
 	},
 
 	_onMouseDown: function () {
-		if (this._focused) { return; }
-
-		var body = document.body,
-		    docEl = document.documentElement,
-		    top = body.scrollTop || docEl.scrollTop,
-		    left = body.scrollLeft || docEl.scrollLeft;
-
+		if (this._map._docLayer._permission === 'edit') {
+			return;
+		}
 		this._map._container.focus();
-
-		window.scrollTo(left, top);
-	},
-
-	_onFocus: function () {
-		this._focused = true;
-		this._map.fire('focus');
 	},
 
-	_onBlur: function () {
-		this._focused = false;
-		this._map.fire('blur');
+	// Convert javascript key codes to UNO key codes.
+	_toUNOKeyCode: function (keyCode) {
+		return this.keymap[keyCode] || keyCode;
 	},
 
-	_setPanOffset: function (pan) {
-		var keys = {},
-		    codes = this.keyCodes,
-		    i, len;
-
-		for (i = 0, len = codes.left.length; i < len; i++) {
-			keys[codes.left[i]] = [-1 * pan, 0];
-		}
-		for (i = 0, len = codes.right.length; i < len; i++) {
-			keys[codes.right[i]] = [pan, 0];
-		}
-		for (i = 0, len = codes.down.length; i < len; i++) {
-			keys[codes.down[i]] = [0, pan];
-		}
-		for (i = 0, len = codes.up.length; i < len; i++) {
-			keys[codes.up[i]] = [0, -1 * pan];
+	_onKeyDown: function (e) {
+		var docLayer = this._map._docLayer;
+		if (e.originalEvent.ctrlKey) {
+			// we prepare for a copy event
+			docLayer._textArea.value = 'dummy text';
+			docLayer._textArea.focus();
+			docLayer._textArea.select();
+			return;
 		}
-	},
 
-	_setZoomOffset: function (zoom) {
-		var keys = this._zoomKeys = {},
-		    codes = this.keyCodes,
-		    i, len;
+		if (docLayer._permission !== 'edit') {
+			return;
+		}
 
-		for (i = 0, len = codes.zoomIn.length; i < len; i++) {
-			keys[codes.zoomIn[i]] = zoom;
+		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));
 		}
-		for (i = 0, len = codes.zoomOut.length; i < len; i++) {
-			keys[codes.zoomOut[i]] = -zoom;
+		else if (e.type === 'keypress' &&
+				(!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));
 		}
-	},
-
-	_addHooks: function () {
-		L.DomEvent.on(document, 'keydown', this._onKeyDown, this);
-	},
-
-	_removeHooks: function () {
-		L.DomEvent.off(document, 'keydown', this._onKeyDown, this);
-	},
-
-	_onKeyDown: function (e) {
-		if (this._map._bDisableKeyboard || e.altKey || e.ctrlKey || e.metaKey) { return; }
-
-		var key = e.keyCode,
-		    map = this._map;
-
-		if (key in this._zoomKeys) {
-			map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);
-
-		} else if (key === 27) {
-			map.closePopup();
-
-		} else {
-			return;
+		else if (e.type === 'keyup') {
+			docLayer._postKeyboardEvent('up', charCode, this._toUNOKeyCode(keyCode));
 		}
-
-		L.DomEvent.stop(e);
+		if (keyCode === 9) {
+			// tab would change focus to other DOM elements
+			e.originalEvent.preventDefault();
+		}
+		L.DomEvent.stopPropagation(e.originalEvent);
 	}
 });
 


More information about the Libreoffice-commits mailing list