loleaflet/src/map/handler/Map.TouchGesture.js |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

New commits:
commit aea119edb733d69b652a40994b823d912aa8dfae
Author:     Pranam Lashkari <lpra...@collabora.com>
AuthorDate: Tue Feb 11 08:20:47 2020 +0530
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Fri Mar 6 16:32:43 2020 +0100

    Stop unnecessary calculation: ergonomic scrolling
    
    Even when the document reached the boundary,
    autoscrolling function was being called unnecessary
     until certain conditions are met
     this did not cause the document to scroll beyond the boundary
     bu it used to consume some CPU
    
     follow up for: https://gerrit.libreoffice.org/c/online/+/88072
    
    Change-Id: I1cb6d6917c70de18af369d827e986a16eeb50c99
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88421
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Henry Castro <hcas...@collabora.com>

diff --git a/loleaflet/src/map/handler/Map.TouchGesture.js 
b/loleaflet/src/map/handler/Map.TouchGesture.js
index 849f64d69..1fc7479c6 100644
--- a/loleaflet/src/map/handler/Map.TouchGesture.js
+++ b/loleaflet/src/map/handler/Map.TouchGesture.js
@@ -637,6 +637,7 @@ L.Map.TouchGesture = L.Handler.extend({
 
        _autoscroll: function() {
                var elapsed, delta;
+
                elapsed = Date.now() - this._timeStamp;
                delta = this._amplitude.multiplyBy(Math.exp(-elapsed / 325));
                var e = this._constructFakeEvent({
@@ -646,13 +647,24 @@ L.Map.TouchGesture = L.Handler.extend({
                }, 'mousemove');
                e.autoscroll = true;
                if (delta.x > 0.2 || delta.x < -0.2 || delta.y > 0.2 || delta.y 
< -0.2) {
+                       var org = this._map.getPixelOrigin();
+                       var docSize = 
this._map.getLayerMaxBounds().getSize().subtract(this._map.getSize());
+                       var horizontalEnd, verticalEnd;
+
                        if (this._map.getDocSize().x < this._map.getSize().x) {
                                //don't scroll horizontally if document fits 
the view
                                delta.x = 0;
+                               horizontalEnd = true;
+                       } else {
+                               horizontalEnd = Math.max(Math.min(org.x, 
this._newPos.x), org.x - Math.max(docSize.x, 0)) !== this._newPos.x;
                        }
+
                        if (this._map.getDocSize().y < this._map.getSize().y) {
                                //don't scroll vertically if document fits the 
view
                                delta.y = 0;
+                               verticalEnd = true;
+                       } else {
+                               verticalEnd = Math.max(Math.min(org.y, 
this._newPos.y), org.y - Math.max(docSize.y, 0)) !== this._newPos.y;
                        }
 
                        this._map.dragging._draggable._startPoint = 
this._startSwipePoint;
@@ -666,7 +678,9 @@ L.Map.TouchGesture = L.Handler.extend({
                        this._map._docLayer._preFetchBorder = null;
                        this._map._docLayer._preFetchTiles();
 
-                       this.autoscrollAnimReq = 
L.Util.requestAnimFrame(this._autoscroll, this, true);
+                       if (!horizontalEnd || !verticalEnd) {
+                               this.autoscrollAnimReq = 
L.Util.requestAnimFrame(this._autoscroll, this, true);
+                       }
                }
                else {
                        this._map.dragging._draggable._onUp(e);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to