loleaflet/src/control/Ruler.js | 54 +++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 21 deletions(-)
New commits: commit ad19d910caf70eacd547172a06d105d2410ef633 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Mon Apr 20 09:59:34 2020 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Mon Apr 20 12:45:22 2020 +0200 ruler: make sure touch and mouse events don't cause an error We need to make sure we don't accidentally get into either a touch or mouse event codepath, which would cause an error as the events and cases differe a bit. For example touch event has no 'button' member, which means a touch 'panstart' event would be ignored in every case, which would then cause an error in 'panmove' and 'panend' because some variable wouldn't be set. Change-Id: I08e4850b735f753639f7001b736c2883cf2d683f Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92550 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/loleaflet/src/control/Ruler.js b/loleaflet/src/control/Ruler.js index e4251fd4d..7d41d7e66 100644 --- a/loleaflet/src/control/Ruler.js +++ b/loleaflet/src/control/Ruler.js @@ -406,27 +406,30 @@ L.Control.Ruler = L.Control.extend({ tabstopContainer = event.currentTarget; pointX = event.layerX; } - - if (event.button === 2) { - this.currentPositionInTwips = this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x; - - $.contextMenu({ - selector: '.loleaflet-ruler-tabstopcontainer', - className: 'loleaflet-font', - items: { - inserttabstop: { - name: _('Insert tabstop'), - callback: (this._insertTabstop).bind(this) + tabstopContainer.tabStopMarkerBeingDragged = null; + + // Check what to do when a mouse buttons is clicked, ignore touch + if (event.type !== 'panstart') { + // right-click inside tabstop container + if (event.button === 2) { + this.currentPositionInTwips = this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x; + $.contextMenu({ + selector: '.loleaflet-ruler-tabstopcontainer', + className: 'loleaflet-font', + items: { + inserttabstop: { + name: _('Insert tabstop'), + callback: (this._insertTabstop).bind(this) + } } - } - }); - - event.stopPropagation(); - return; - } - else if (event.button !== 0) { - event.stopPropagation(); // prevent handling of the mother event elsewhere - return; + }); + event.stopPropagation(); + return; + } + else if (event.button !== 0) { + event.stopPropagation(); // prevent handling of the mother event elsewhere + return; + } } // check if we hit any tabstop @@ -473,10 +476,15 @@ L.Control.Ruler = L.Control.extend({ pointX = event.layerX; } + if (tabstopContainer === null) + return; + var marker = tabstopContainer.tabStopMarkerBeingDragged; + if (marker === null) + return; + //console.log('===> _moveTabstop ' + event.type); var pixelDiff = pointX - tabstopContainer.tabStopInitialPosiiton; - var marker = tabstopContainer.tabStopMarkerBeingDragged; marker.style.left = (marker.tabStopLocation.left + pixelDiff) + 'px'; }, @@ -494,7 +502,11 @@ L.Control.Ruler = L.Control.extend({ pointX = event.layerX; } + if (tabstopContainer === null) + return; var marker = tabstopContainer.tabStopMarkerBeingDragged; + if (marker === null) + return; if (event.type == 'mouseout') { marker.style.left = (marker.tabStopLocation.left) + 'px'; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits