loleaflet/src/control/Control.Zoom.js         |   11 +++++++++++
 loleaflet/src/layer/tile/TileLayer.js         |   20 +++++++++-----------
 loleaflet/src/map/Map.js                      |   10 +++++-----
 loleaflet/src/map/handler/Map.FileInserter.js |    3 +--
 4 files changed, 26 insertions(+), 18 deletions(-)

New commits:
commit 4c3896c32ea1e92b2306c4c759aeccb809a35d68
Author: Jan Holesovsky <[email protected]>
Date:   Thu Jan 7 21:52:19 2016 +0100

    loleaflet: No need to use the last zoom in fitWithZoom().
    
    This makes it a stable algorithm.
    
    This reverts commit 749d707c2f2be64424c0f3f9e105f90e22592a41.

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 5e2ded1..bc05cac 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -934,20 +934,19 @@ L.TileLayer = L.GridLayer.extend({
 
        _fitWidthZoom: function (e, maxZoom) {
                var size = e ? e.newSize : this._map.getSize();
+               var widthTwips = size.x * this._map.options.tileWidthTwips / 
this._tileSize;
                maxZoom = maxZoom ? maxZoom : this._map.options.zoom;
                if (this._docType !== 'spreadsheet' || !e) {
                        // If it's not a spreadsheet or the method has been 
invoked manually
                        var crsScale = this._map.options.crs.scale(1);
-                       if (size.x / this._docPixelSize.x > crsScale) {
-                               // we could zoom in
-                               var ratio = size.x / this._docPixelSize.x;
-                               var zoomDelta = Math.ceil(Math.log(ratio) / 
Math.log(crsScale));
-                               this._map.setZoom(Math.min(maxZoom, 
this._map.getZoom() + zoomDelta), {animate: false});
-                       }
-                       if (this._docPixelSize.x > size.x) {
-                               ratio = this._docPixelSize.x / size.x;
-                               zoomDelta = Math.ceil(Math.log(ratio) / 
Math.log(crsScale));
-                               this._map.setZoom(Math.max(1, 
this._map.getZoom() - zoomDelta), {animate: false});
+                       if (this._docWidthTwips > 0)
+                       {
+                               var ratio = widthTwips / this._docWidthTwips;
+                               var zoom = this._map.options.zoom + 
Math.floor(Math.log(ratio) / Math.log(crsScale));
+
+                               zoom = Math.max(1, zoom);
+                               zoom = Math.min(maxZoom, zoom);
+                               this._map.setZoom(zoom, {animate: false});
                        }
                }
        },
commit f3778421b1d5c4695f8ad42d648aa97c310ae3cb
Author: Ozcan Esen <[email protected]>
Date:   Wed Jan 6 12:33:51 2016 +0200

    loleaflet: fix fitWidthZoom inconsistency
    
    Change-Id: I511112d05de2b2734d7d2b2f905a3ba797dcca5f

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index b22a0df..5e2ded1 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -938,16 +938,16 @@ L.TileLayer = L.GridLayer.extend({
                if (this._docType !== 'spreadsheet' || !e) {
                        // If it's not a spreadsheet or the method has been 
invoked manually
                        var crsScale = this._map.options.crs.scale(1);
-                       if (this._docPixelSize.x > size.x) {
-                               var ratio = this._docPixelSize.x / size.x;
+                       if (size.x / this._docPixelSize.x > crsScale) {
+                               // we could zoom in
+                               var ratio = size.x / this._docPixelSize.x;
                                var zoomDelta = Math.ceil(Math.log(ratio) / 
Math.log(crsScale));
-                               this._map.setZoom(Math.max(1, 
this._map.getZoom() - zoomDelta), {animate: false});
+                               this._map.setZoom(Math.min(maxZoom, 
this._map.getZoom() + zoomDelta), {animate: false});
                        }
-                       else if (size.x / this._docPixelSize.x > crsScale) {
-                               // we could zoom in
-                               ratio = size.x / this._docPixelSize.x;
+                       if (this._docPixelSize.x > size.x) {
+                               ratio = this._docPixelSize.x / size.x;
                                zoomDelta = Math.ceil(Math.log(ratio) / 
Math.log(crsScale));
-                               this._map.setZoom(Math.min(maxZoom, 
this._map.getZoom() + zoomDelta), {animate: false});
+                               this._map.setZoom(Math.max(1, 
this._map.getZoom() - zoomDelta), {animate: false});
                        }
                }
        },
commit 07a3b6994e5143c0a6c5a3df946c6ec456114109
Author: Jan Holesovsky <[email protected]>
Date:   Thu Jan 7 17:49:52 2016 +0100

    loleaflet: Add a button for testing fitWidthZoom().

diff --git a/loleaflet/src/control/Control.Zoom.js 
b/loleaflet/src/control/Control.Zoom.js
index 2d550a9..407a25b 100644
--- a/loleaflet/src/control/Control.Zoom.js
+++ b/loleaflet/src/control/Control.Zoom.js
@@ -7,6 +7,8 @@ L.Control.Zoom = L.Control.extend({
                position: 'topleft',
                zoomInText: '+',
                zoomInTitle: 'Zoom in',
+               fitWidthText: '↔',
+               fitWidthTitle: 'Fit Width',
                zoomOutText: '-',
                zoomOutTitle: 'Zoom out'
        },
@@ -18,6 +20,8 @@ L.Control.Zoom = L.Control.extend({
 
                this._zoomInButton  = this._createButton(options.zoomInText, 
options.zoomInTitle,
                        zoomName + '-in',  container, this._zoomIn);
+               this._fitWidthButton  = 
this._createButton(options.fitWidthText, options.fitWidthTitle,
+                       zoomName + '-fitwidth',  container, this._fitWidth);
                this._zoomOutButton = this._createButton(options.zoomOutText, 
options.zoomOutTitle,
                        zoomName + '-out', container, this._zoomOut);
 
@@ -49,6 +53,12 @@ L.Control.Zoom = L.Control.extend({
                }
        },
 
+       _fitWidth: function (e) {
+               if (!this._disabled) {
+                       this._map.fitWidthZoom();
+               }
+       },
+
        _zoomOut: function (e) {
                if (!this._disabled) {
                        this._map.zoomOut(e.shiftKey ? 3 : 1);
@@ -75,6 +85,7 @@ L.Control.Zoom = L.Control.extend({
                        className = 'leaflet-disabled';
 
                L.DomUtil.removeClass(this._zoomInButton, className);
+               L.DomUtil.removeClass(this._fitWidthButton, className);
                L.DomUtil.removeClass(this._zoomOutButton, className);
 
                if (this._disabled || map._zoom === map.getMinZoom()) {
commit 1d992852941799c7b56279bf53ce9f7517e8d134
Author: Jan Holesovsky <[email protected]>
Date:   Thu Jan 7 17:56:13 2016 +0100

    loleaflet: One more place that needs options.webserver.

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 8425cad..b22a0df 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -330,7 +330,6 @@ L.TileLayer = L.GridLayer.extend({
        _onDownloadAsMsg: function (textMsg) {
                var command = L.Socket.parseServerCmd(textMsg);
                var parser = document.createElement('a');
-               var protocol = window.location.protocol === 'file:' ? 'http:' : 
window.location.protocol;
                parser.href = this._map.options.server;
                var url = this._map.options.webserver + '/' +
                        command.jail + '/' + command.dir + '/' + command.name;
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index f7f3664..4a90e4e 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -46,6 +46,11 @@ L.Map = L.Evented.extend({
                        this.setView(L.latLng(options.center), options.zoom, 
{reset: true});
                }
 
+               if (options.webserver === undefined) {
+                       var protocol = window.location.protocol === 'file:' ? 
'http:' : window.location.protocol;
+                       options.webserver = options.server.replace(/^ws:/i, 
protocol);
+               }
+
                this._handlers = [];
                this._layers = {};
                this._zoomBoundLayers = {};
@@ -60,11 +65,6 @@ L.Map = L.Evented.extend({
                this._addLayers(this.options.layers);
                L.Socket.connect(this);
 
-               if (options.webserver === undefined) {
-                       var protocol = window.location.protocol === 'file:' ? 
'http:' : window.location.protocol;
-                       options.webserver = options.server.replace(/^ws:/i, 
protocol);
-               }
-
                // Inhibit the context menu - the browser thinks that the 
document
                // is just a bunch of images, hence the context menu is useless 
(tdf#94599)
                this.on('contextmenu', function() {});
diff --git a/loleaflet/src/map/handler/Map.FileInserter.js 
b/loleaflet/src/map/handler/Map.FileInserter.js
index 4748186..e95050d 100644
--- a/loleaflet/src/map/handler/Map.FileInserter.js
+++ b/loleaflet/src/map/handler/Map.FileInserter.js
@@ -13,9 +13,8 @@ L.Map.FileInserter = L.Handler.extend({
                this._childId = null;
                this._toInsert = {};
                var parser = document.createElement('a');
-               var protocol = window.location.protocol === 'file:' ? 'http:' : 
window.location.protocol;
                parser.href = map.options.server;
-               this._url = protocol + '//' + parser.hostname + ':' + 
parser.port + '/insertfile';
+               this._url = map.options.webserver + '/insertfile';
        },
 
        addHooks: function () {
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to