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

Reply via email to