loleaflet/debug/document/document_simple_example.html | 1 + loleaflet/dist/leaflet.css | 18 +++++++++++++++++- loleaflet/src/layer/tile/TileLayer.js | 11 +++++++++++ loleaflet/src/map/Map.js | 3 ++- loleaflet/src/map/handler/Map.Keyboard.js | 8 ++++++++ 5 files changed, 39 insertions(+), 2 deletions(-)
New commits: commit 4b996b644d1c6b26888aa52871addaa4094a3191 Author: Mihai Varga <[email protected]> Date: Wed Jun 24 13:32:56 2015 +0300 Copy event handler I implemented the solution found here http://stackoverflow.com/questions/17527870/how-does-trello-access-the-users-clipboard#answer-17528590 which basically creates an invisible text area, sets focus to it, selects the text, enables firing the oncopy then focus is restored to the document. diff --git a/loleaflet/debug/document/document_simple_example.html b/loleaflet/debug/document/document_simple_example.html index 9f49456..8e2fb3f 100644 --- a/loleaflet/debug/document/document_simple_example.html +++ b/loleaflet/debug/document/document_simple_example.html @@ -32,6 +32,7 @@ only zoom and search:</p> </div> <div id="document-container" style="top:100px"> + <div id="clipboard-container"><textarea id="clipboard"></textarea></div> <div id="map"></div> <div id="scroll-container"> <div id="mock-document"> diff --git a/loleaflet/dist/leaflet.css b/loleaflet/dist/leaflet.css index a6a6007..104b7ff 100644 --- a/loleaflet/dist/leaflet.css +++ b/loleaflet/dist/leaflet.css @@ -101,7 +101,7 @@ .leaflet-top, .leaflet-bottom { position: absolute; - z-index: 1000; + z-index: 10; pointer-events: none; } .leaflet-top { @@ -611,3 +611,19 @@ color: black; } } + +#clipboard-container { + position: fixed; + left: 0px; + top: 0px; + width: 0px; + height: 0px; + z-index: 100; + display: none; + opacity: 0; +} +#clipboard { + width: 1px; + height: 1px; + padding: 0px; +} diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 3ad06a9..a21481b 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -174,6 +174,7 @@ L.TileLayer = L.GridLayer.extend({ this._onMouseEvent, this); this._map.on('viewmode editmode', this._updateEditViewMode, this); this._map.on('drag', this._updateScrollOffset, this); + this._map.on('copy', this._onCopy, this); this._startMarker.on('drag dragend', this._onSelectionHandleDrag, this); this._endMarker.on('drag dragend', this._onSelectionHandleDrag, this); }, @@ -852,6 +853,16 @@ L.TileLayer = L.GridLayer.extend({ this._map.removeLayer(this._startMarker); this._map.removeLayer(this._endMarker); } + }, + + _onCopy: function (e) { + console.log(e); + e = e.originalEvent; + e.preventDefault(); + e.clipboardData.setData('text', 'test copy'); + var clipboardContainer = L.DomUtil.get('clipboard-container'); + L.DomUtil.setStyle(clipboardContainer, 'display', 'none'); + this._map._container.focus(); } }); diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js index dcb3b2a..6d07799 100644 --- a/loleaflet/src/map/Map.js +++ b/loleaflet/src/map/Map.js @@ -584,6 +584,7 @@ L.Map = L.Evented.extend({ L.DomEvent[onOff](this._container, 'click dblclick mousedown mouseup ' + 'mouseover mouseout mousemove contextmenu keydown keypress keyup', this._handleDOMEvent, this); + L.DomEvent[onOff](L.DomUtil.get('clipboard'), 'copy', this._handleDOMEvent, this); if (this.options.trackResize) { L.DomEvent[onOff](window, 'resize', this._onResize, this); @@ -636,7 +637,7 @@ L.Map = L.Evented.extend({ var data = { originalEvent: e }; - if (e.type !== 'keypress' && e.type !== 'keyup' && e.type !== 'keydown') { + if (e.type !== 'keypress' && e.type !== 'keyup' && e.type !== 'keydown' && e.type != 'copy') { 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 e524ce8..afc0763 100644 --- a/loleaflet/src/map/handler/Map.Keyboard.js +++ b/loleaflet/src/map/handler/Map.Keyboard.js @@ -125,6 +125,14 @@ L.Map.Keyboard = L.Handler.extend({ }, _onKeyDown: function (e) { + if (e.ctrlKey) { + var clipboardContainer = L.DomUtil.get('clipboard-container'); + var textArea = L.DomUtil.get('clipboard'); + L.DomUtil.setStyle(clipboardContainer, 'display', 'inline'); + textArea.value = 'dummy text'; + textArea.focus(); + textArea.select(); + } if (this._map._bDisableKeyboard || e.altKey || e.ctrlKey || e.metaKey) { return; } var key = e.keyCode, _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
