loleaflet/src/map/handler/Map.Mouse.js |   34 +++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

New commits:
commit 0c948fa62890cb68537008e2a4e3a60ffc594559
Author: Marco Cecchetti <marco.cecche...@collabora.com>
Date:   Tue Aug 1 17:51:27 2017 +0200

    loleaflet: graphic selection can get misplaced if mouse is moved fast
    
    Change-Id: I2c1893110ce76bed2c822c8d1ddd293c8f627307
    Reviewed-on: https://gerrit.libreoffice.org/40644
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>
    Tested-by: Jan Holesovsky <ke...@collabora.com>
    (cherry picked from commit 67de89cbbc238b12b1064a2107967caecd9f126c)
    Reviewed-on: https://gerrit.libreoffice.org/40826

diff --git a/loleaflet/src/map/handler/Map.Mouse.js 
b/loleaflet/src/map/handler/Map.Mouse.js
index b5861ff1..78229005 100644
--- a/loleaflet/src/map/handler/Map.Mouse.js
+++ b/loleaflet/src/map/handler/Map.Mouse.js
@@ -45,25 +45,27 @@ L.Map.Mouse = L.Handler.extend({
                        if (docLayer._graphicMarker.isDragged) {
                                return;
                        }
-                       if 
(!docLayer._isEmptyRectangle(docLayer._graphicSelection) &&
-                                       
docLayer._graphicMarker.getBounds().contains(e.latlng)) {
+                       if 
(!docLayer._isEmptyRectangle(docLayer._graphicSelection)) {
                                // if we have a graphic selection and the user 
clicks inside the rectangle
-                               if (e.type === 'mousedown') {
+                               var isInside = 
docLayer._graphicMarker.getBounds().contains(e.latlng);
+                               if (e.type === 'mousedown' && isInside) {
                                        this._prevMousePos = e.latlng;
                                }
-                               else if (e.type === 'mousemove' && 
this._mouseDown && !this._prevMousePos) {
-                                       // if the user started to drag the 
shape before the selection
-                                       // has been drawn
-                                       this._prevMousePos = e.latlng;
-                               }
-                               else if (e.type === 'mousemove' && 
this._prevMousePos) {
-                                       // we have a graphic selection and the 
user started to drag it
-                                       var delta = L.latLng(e.latlng.lat - 
this._prevMousePos.lat, e.latlng.lng - this._prevMousePos.lng);
-                                       this._prevMousePos = e.latlng;
-                                       var oldSelectionCenter = 
docLayer._graphicMarker.getBounds().getCenter();
-                                       var newSelectionCenter = 
L.latLng(oldSelectionCenter.lat + delta.lat, oldSelectionCenter.lng + 
delta.lng);
-                                       if (docLayer._graphicMarker.editing) {
-                                               
docLayer._graphicMarker.editing._move(newSelectionCenter);
+                               else if (e.type === 'mousemove' && 
this._mouseDown) {
+                                       if (!this._prevMousePos && isInside) {
+                                               // if the user started to drag 
the shape before the selection
+                                               // has been drawn
+                                               this._prevMousePos = e.latlng;
+                                       }
+                                       else {
+                                               // we have a graphic selection 
and the user started to drag it
+                                               var delta = 
L.latLng(e.latlng.lat - this._prevMousePos.lat, e.latlng.lng - 
this._prevMousePos.lng);
+                                               this._prevMousePos = e.latlng;
+                                               var oldSelectionCenter = 
docLayer._graphicMarker.getBounds().getCenter();
+                                               var newSelectionCenter = 
L.latLng(oldSelectionCenter.lat + delta.lat, oldSelectionCenter.lng + 
delta.lng);
+                                               if 
(docLayer._graphicMarker.editing) {
+                                                       
docLayer._graphicMarker.editing._move(newSelectionCenter);
+                                               }
                                        }
                                }
                                else if (e.type === 'mouseup') {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to