loleaflet/src/control/Control.ColumnHeader.js |   13 ++++++++++++-
 loleaflet/src/control/Control.Header.js       |   21 +++++++++++++++++----
 2 files changed, 29 insertions(+), 5 deletions(-)

New commits:
commit ab64d2e0c315d26c358ff99548bb7353708eab6b
Author:     Dennis Francis <dennis.fran...@collabora.com>
AuthorDate: Wed Jan 29 13:38:16 2020 +0530
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Wed Feb 5 14:02:17 2020 +0100

    Adjust column-header height with zoom-level too
    
    Introduce a new method 'getHeaderZoomScale' to L.Control.Header
    that returns current zoom-scale w.r.t to 100% zoom. It also lets
    you limit the zoomScale between a upper and lower bound. Use this
    method to scale column header height. Reuse this method to
    scale font-size too.
    
    Change-Id: I841ef2d73752cdc2206549d540633e179f19677f
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/87671
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/loleaflet/src/control/Control.ColumnHeader.js 
b/loleaflet/src/control/Control.ColumnHeader.js
index 174901b15..76c536e17 100644
--- a/loleaflet/src/control/Control.ColumnHeader.js
+++ b/loleaflet/src/control/Control.ColumnHeader.js
@@ -36,6 +36,7 @@ L.Control.ColumnHeader = L.Control.Header.extend({
                this._canvasContext = this._canvas.getContext('2d');
                this._setCanvasWidth();
                this._setCanvasHeight();
+               this._canvasBaseHeight = this._canvasHeight;
 
                var scale = L.getDpiScaleFactor();
                this._canvasContext.scale(scale, scale);
@@ -388,6 +389,12 @@ L.Control.ColumnHeader = L.Control.Header.extend({
                this._setCanvasWidth();
                this._setCanvasHeight();
                this._canvasContext.clearRect(0, 0, canvas.width, 
canvas.height);
+               // Adjust (column) _headerHeight according to zoomlevel. This 
is used below to call resize()
+               // where column/corner header are resized. Besides the document 
container and row header container
+               // are moved up or down as required so that there is no 
gap/overlap below column header.
+               // Limit zoomScale so that the column header is not too small 
(unreadable) or too big.
+               this._headerHeight = Math.ceil(this._canvasBaseHeight *
+                       this.getHeaderZoomScale(/* lowerBound */ 0.74, /* 
upperBound */ 1.15));
 
                // Reset state
                this._current = -1;
@@ -648,7 +655,11 @@ L.Control.ColumnHeader = L.Control.Header.extend({
                var rowHdrTop = parseInt(L.DomUtil.getStyle(rowHeader, 'top')) 
+ deltaTop;
                var docTop = parseInt(L.DomUtil.getStyle(document, 'top')) + 
deltaTop;
                L.DomUtil.setStyle(rowHeader, 'top', rowHdrTop + 'px');
-               L.DomUtil.setStyle(document, 'top', docTop + 'px');
+               // L.DomUtil.setStyle does not seem to affect the attributes 
when
+               // one of the media queries of document-container element are
+               // active (non-desktop case). Using style.setProperty directly
+               // seems to work as expected for both mobile/desktop.
+               document.style.setProperty('top', docTop + 'px', 'important');
 
                this._setCanvasHeight(height);
 
diff --git a/loleaflet/src/control/Control.Header.js 
b/loleaflet/src/control/Control.Header.js
index 37d03062c..167a782ad 100644
--- a/loleaflet/src/control/Control.Header.js
+++ b/loleaflet/src/control/Control.Header.js
@@ -72,17 +72,16 @@ L.Control.Header = L.Control.extend({
                var fontHeight = parseInt(L.DomUtil.getStyle(elem, 
'line-height'));
                var rate = fontHeight / fontSize;
                this._font = {
-                       _map: this._map,
+                       _hdr: this,
                        _baseFontSize: fontSize,
                        _fontSizeRate: rate,
                        _fontFamily: fontFamily,
                        getFont: function() {
-                               var zoomScale = 
this._map.getZoomScale(this._map.getZoom(),
-                                       this._map.options.defaultZoom);
                                // Limit zoomScale to 115%. At 120% the row ids 
at the bottom eat all
                                // horizontal margins and it looks ugly. Beyond 
120% the row ids get
                                // clipped out visibly.
-                               zoomScale = Math.min(zoomScale, 1.15);
+                               var zoomScale = this._hdr.getHeaderZoomScale(
+                                       /* lowerBound */ 0.5, /* upperBound */ 
1.15);
 
                                return Math.floor(this._baseFontSize * 
zoomScale) +
                                        'px/' +
@@ -743,6 +742,20 @@ L.Control.Header = L.Control.extend({
                }
        },
 
+       getHeaderZoomScale : function(lowerBound, upperBound) {
+               if (typeof lowerBound === 'undefined' || lowerBound < 0)
+                       lowerBound = 0.5;
+               if (typeof upperBound === 'undefined' || upperBound < 0)
+                       upperBound = 2.0;
+               if (lowerBound > upperBound) {
+                       lowerBound = 0.5;
+                       upperBound = 2.0;
+               }
+               var zoomScale = this._map.getZoomScale(this._map.getZoom(),
+                       this._map.options.defaultZoom);
+               return Math.min(Math.max(zoomScale, lowerBound), upperBound);
+       },
+
        onDragStart: function () {},
        onDragMove: function () {},
        onDragEnd: function () {},
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to