loleaflet/src/layer/SplitPanesContext.js | 40 +++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 10 deletions(-)
New commits: commit bd928485c799feb9f6047374cfb10c3f357eeaba Author: Dennis Francis <dennis.fran...@collabora.com> AuthorDate: Fri Jul 24 09:28:13 2020 +0530 Commit: Dennis Francis <dennis.fran...@collabora.com> CommitDate: Fri Jul 24 15:33:07 2020 +0200 split-panes: justify and compute both x/y snap positions... together and fire a single 'splitposchanged' instead of firing separately for each dimension. This is important at least in the case of changing zooms, where without this fix, the listeners will get incorrect(old) value of y split position for the first fire. Change-Id: Ic90aa74f9a57dd240a8a3038967c44cf89c3ff89 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99370 Tested-by: Jenkins Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Dennis Francis <dennis.fran...@collabora.com> diff --git a/loleaflet/src/layer/SplitPanesContext.js b/loleaflet/src/layer/SplitPanesContext.js index 74c54d778..01920ec8e 100644 --- a/loleaflet/src/layer/SplitPanesContext.js +++ b/loleaflet/src/layer/SplitPanesContext.js @@ -46,8 +46,10 @@ L.SplitPanesContext = L.Class.extend({ setSplitPos: function (splitX, splitY, forceUpdate) { - this.setHorizSplitPos(splitX, forceUpdate); - this.setVertSplitPos(splitY, forceUpdate); + var xchanged = this.setHorizSplitPos(splitX, forceUpdate, true /* noFire */); + var ychanged = this.setVertSplitPos(splitY, forceUpdate, true /* noFire */); + if (xchanged || ychanged) + this._map.fire('splitposchanged'); }, alignSplitPos: function () { @@ -81,7 +83,7 @@ L.SplitPanesContext = L.Class.extend({ this._docLayer.getSnapDocPosY(split); }, - setHorizSplitPos: function (splitX, forceUpdate) { + setHorizSplitPos: function (splitX, forceUpdate, noFire) { console.assert(typeof splitX === 'number', 'splitX must be a number'); @@ -89,16 +91,25 @@ L.SplitPanesContext = L.Class.extend({ if (forceUpdate || !this._docLayer.hasXSplitter()) { this._updateXSplitter(); } - return; + return false; } - this._splitPos.x = this.justifySplitPos(splitX, true /* isHoriz */); + var changed = false; + var newX = this.justifySplitPos(splitX, true /* isHoriz */); + if (newX !== this._splitPos.x) { + this._splitPos.x = newX; + changed = true; + } this._updateXSplitter(); - this._map.fire('splitposchanged'); + + if (!noFire) + this._map.fire('splitposchanged'); + + return changed; }, - setVertSplitPos: function (splitY, forceUpdate) { + setVertSplitPos: function (splitY, forceUpdate, noFire) { console.assert(typeof splitY === 'number', 'splitY must be a number'); @@ -106,13 +117,22 @@ L.SplitPanesContext = L.Class.extend({ if (forceUpdate || !this._docLayer.hasYSplitter()) { this._updateYSplitter(); } - return; + return false; } - this._splitPos.y = this.justifySplitPos(splitY, false /* isHoriz */); + var changed = false; + var newY = this.justifySplitPos(splitY, false /* isHoriz */); + if (newY !== this._splitPos.y) { + this._splitPos.y = newY; + changed = true; + } this._updateYSplitter(); - this._map.fire('splitposchanged'); + + if (!noFire) + this._map.fire('splitposchanged'); + + return changed; }, alignHorizSplitPos: function () { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits