loleaflet/build/deps.js | 7 + loleaflet/src/layer/tile/TileLayer.js | 109 --------------------------- loleaflet/src/map/handler/Map.Mouse.js | 131 +++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 110 deletions(-)
New commits: commit e8eedf3f258300bc54c0074cd56a26ee821d4ad9 Author: Mihai Varga <mihai.va...@collabora.com> Date: Thu Jul 16 16:15:30 2015 +0300 loleaflet: moved mouse handler from TileLayer.js -> Map.Mouse.js diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js index c5927ba..a3d0ee9 100644 --- a/loleaflet/build/deps.js +++ b/loleaflet/build/deps.js @@ -192,7 +192,12 @@ var deps = { Keyboard: { src: ['map/handler/Map.Keyboard.js'], - desc: 'Enables keyboard pan/zoom when the map is focused.' + desc: 'Handles keyboard interaction with the document.' + }, + + Mouse: { + src: ['map/handler/Map.Mouse.js'], + desc: 'Handles mouse interaction with the document.' }, MarkerDrag: { diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index e7af468..ac74511 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -89,7 +89,6 @@ L.TileLayer = L.GridLayer.extend({ }), draggable: true }); - this._mouseEventsQueue = []; this._pendingTilesCount = 0; this._textArea = L.DomUtil.get('clipboard'); this._textArea.focus(); @@ -110,8 +109,6 @@ L.TileLayer = L.GridLayer.extend({ this._map.on('clearselection', this._clearSelections, this); this._map.on('drag', this._updateScrollOffset, this); this._map.on('copy', this._onCopy, this); - this._map.on('mousedown mouseup mouseover mouseout mousemove dblclick', - this._onMouseEvent, this); this._startMarker.on('drag dragend', this._onSelectionHandleDrag, this); this._endMarker.on('drag dragend', this._onSelectionHandleDrag, this); if (this.options.edit && !this.options.readOnly) { @@ -679,113 +676,7 @@ L.TileLayer = L.GridLayer.extend({ ' x=' + x + ' y=' + y); }, - _onMouseEvent: function (e) { - if (this._graphicMarker && this._graphicMarker.isDragged) { - return; - } - - if (this._startMarker.isDragged === true || this._endMarker.isDragged === true) { - return; - } - - if (e.type === 'mousedown') { - this._mouseDown = true; - if (this._holdMouseEvent) { - clearTimeout(this._holdMouseEvent); - } - var mousePos = this._latLngToTwips(e.latlng); - this._mouseEventsQueue.push(L.bind(function() { - this._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1);}, this)); - this._holdMouseEvent = setTimeout(L.bind(this._executeMouseEvents, this), 500); - } - else if (e.type === 'mouseup') { - this._mouseDown = false; - if (this._map.dragging.enabled()) { - if (this._mouseEventsQueue.length === 0) { - // mouse up after panning - return; - } - } - clearTimeout(this._holdMouseEvent); - this._holdMouseEvent = null; - if (this._clickTime && Date.now() - this._clickTime <= 250) { - // double click, a click was sent already - this._mouseEventsQueue = []; - return; - } - else { - this._clickTime = Date.now(); - mousePos = this._latLngToTwips(e.latlng); - var timeOut = 250; - if (this._permission === 'edit') { - timeOut = 0; - } - this._mouseEventsQueue.push(L.bind(function() { - // if it's a click or mouseup after selecting - if (this._mouseEventsQueue.length > 1) { - // it's a click, fire mousedown - this._mouseEventsQueue[0](); - if (this._permission === 'view') { - this._map.setPermission('edit'); - } - } - this._mouseEventsQueue = []; - this._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1); - this._textArea.focus(); - }, this)); - this._holdMouseEvent = setTimeout(L.bind(this._executeMouseEvents, this), timeOut); - - if (this._startMarker._icon) { - L.DomUtil.removeClass(this._startMarker._icon, 'leaflet-not-clickable'); - } - if (this._endMarker._icon) { - L.DomUtil.removeClass(this._endMarker._icon, 'leaflet-not-clickable'); - } - } - } - else if (e.type === 'mousemove' && this._mouseDown) { - if (this._holdMouseEvent) { - clearTimeout(this._holdMouseEvent); - this._holdMouseEvent = null; - if (this._map.dragging.enabled()) { - // The user just panned the document - this._mouseEventsQueue = []; - return; - } - for (var i = 0; i < this._mouseEventsQueue.length; i++) { - // synchronously execute old mouse events so we know that - // they arrive to the server before the move command - this._mouseEventsQueue[i](); - } - this._mouseEventsQueue = []; - } - if (!this._map.dragging.enabled()) { - mousePos = this._latLngToTwips(e.latlng); - this._postMouseEvent('move', mousePos.x, mousePos.y, 1); - if (this._startMarker._icon) { - L.DomUtil.addClass(this._startMarker._icon, 'leaflet-not-clickable'); - } - if (this._endMarker._icon) { - L.DomUtil.addClass(this._endMarker._icon, 'leaflet-not-clickable'); - } - } - } - else if (e.type === 'dblclick') { - mousePos = this._latLngToTwips(e.latlng); - this._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1); - this._postMouseEvent('buttondown', mousePos.x, mousePos.y, 2); - this._postMouseEvent('buttonup', mousePos.x, mousePos.y, 2); - this._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1); - } - }, - _executeMouseEvents: function () { - this._holdMouseEvent = null; - for (var i = 0; i < this._mouseEventsQueue.length; i++) { - this._mouseEventsQueue[i](); - } - this._mouseEventsQueue = []; - }, // Is rRectangle empty? _isEmptyRectangle: function (aBounds) { diff --git a/loleaflet/src/map/handler/Map.Mouse.js b/loleaflet/src/map/handler/Map.Mouse.js new file mode 100644 index 0000000..270bdb2 --- /dev/null +++ b/loleaflet/src/map/handler/Map.Mouse.js @@ -0,0 +1,131 @@ +/* + * L.Map.Mouse is handling mouse interaction with the document + */ + +L.Map.mergeOptions({ + mouse: true, +}); + +L.Map.Mouse = L.Handler.extend({ + + initialize: function (map) { + this._map = map; + this._mouseEventsQueue = []; + }, + + addHooks: function () { + this._map.on('mousedown mouseup mouseover mouseout mousemove dblclick', + this._onMouseEvent, this); + }, + + _onMouseEvent: function (e) { + var docLayer = this._map._docLayer; + if (docLayer._graphicMarker && docLayer._graphicMarker.isDragged) { + return; + } + + if (docLayer._startMarker.isDragged === true || docLayer._endMarker.isDragged === true) { + return; + } + + if (e.type === 'mousedown') { + this._mouseDown = true; + if (this._holdMouseEvent) { + clearTimeout(this._holdMouseEvent); + } + var mousePos = docLayer._latLngToTwips(e.latlng); + this._mouseEventsQueue.push(L.bind(function() { + docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1);}, docLayer)); + this._holdMouseEvent = setTimeout(L.bind(this._executeMouseEvents, this), 500); + } + else if (e.type === 'mouseup') { + this._mouseDown = false; + if (this._map.dragging.enabled()) { + if (this._mouseEventsQueue.length === 0) { + // mouse up after panning + return; + } + } + clearTimeout(this._holdMouseEvent); + this._holdMouseEvent = null; + if (this._clickTime && Date.now() - this._clickTime <= 250) { + // double click, a click was sent already + this._mouseEventsQueue = []; + return; + } + else { + this._clickTime = Date.now(); + mousePos = docLayer._latLngToTwips(e.latlng); + var timeOut = 250; + if (docLayer._permission === 'edit') { + timeOut = 0; + } + this._mouseEventsQueue.push(L.bind(function() { + // if it's a click or mouseup after selecting + if (this._mouseEventsQueue.length > 1) { + // it's a click, fire mousedown + this._mouseEventsQueue[0](); + if (docLayer._permission === 'view') { + docLayer._map.setPermission('edit'); + } + } + this._mouseEventsQueue = []; + docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1); + docLayer._textArea.focus(); + }, this, docLayer)); + this._holdMouseEvent = setTimeout(L.bind(this._executeMouseEvents, this), timeOut); + + if (docLayer._startMarker._icon) { + L.DomUtil.removeClass(docLayer._startMarker._icon, 'leaflet-not-clickable'); + } + if (docLayer._endMarker._icon) { + L.DomUtil.removeClass(docLayer._endMarker._icon, 'leaflet-not-clickable'); + } + } + } + else if (e.type === 'mousemove' && this._mouseDown) { + if (this._holdMouseEvent) { + clearTimeout(this._holdMouseEvent); + this._holdMouseEvent = null; + if (this._map.dragging.enabled()) { + // The user just panned the document + this._mouseEventsQueue = []; + return; + } + for (var i = 0; i < this._mouseEventsQueue.length; i++) { + // synchronously execute old mouse events so we know that + // they arrive to the server before the move command + this._mouseEventsQueue[i](); + } + this._mouseEventsQueue = []; + } + if (!this._map.dragging.enabled()) { + mousePos = docLayer._latLngToTwips(e.latlng); + docLayer._postMouseEvent('move', mousePos.x, mousePos.y, 1); + if (docLayer._startMarker._icon) { + L.DomUtil.addClass(docLayer._startMarker._icon, 'leaflet-not-clickable'); + } + if (docLayer._endMarker._icon) { + L.DomUtil.addClass(docLayer._endMarker._icon, 'leaflet-not-clickable'); + } + } + } + else if (e.type === 'dblclick') { + mousePos = docLayer._latLngToTwips(e.latlng); + docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 1); + docLayer._postMouseEvent('buttondown', mousePos.x, mousePos.y, 2); + docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 2); + docLayer._postMouseEvent('buttonup', mousePos.x, mousePos.y, 1); + } + }, + + _executeMouseEvents: function () { + this._holdMouseEvent = null; + for (var i = 0; i < this._mouseEventsQueue.length; i++) { + this._mouseEventsQueue[i](); + } + this._mouseEventsQueue = []; + } +}); + +L.Map.addInitHook('addHandler', 'mouse', L.Map.Mouse); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits