loleaflet/src/control/Ruler.js |   97 +++++++++++++++++++++--------------------
 1 file changed, 51 insertions(+), 46 deletions(-)

New commits:
commit e49b995f53291d49febab879d52153d9e6636bb6
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Thu Jun 4 12:13:17 2020 +0200
Commit:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
CommitDate: Thu Jun 4 12:18:17 2020 +0200

    ruler: delete tabstop on long-press when over a specific tabstop
    
    When a long-press event occurs over a tabstop, it will now delete
    it. If no specific tabstop is at the long-press position, then
    insert a new tabstop.
    
    Change-Id: I3af2847db3367c1f76d28696f4fa3d0a8017011c

diff --git a/loleaflet/src/control/Ruler.js b/loleaflet/src/control/Ruler.js
index b3cb520b9..3c64f0280 100644
--- a/loleaflet/src/control/Ruler.js
+++ b/loleaflet/src/control/Ruler.js
@@ -300,9 +300,7 @@ L.Control.Ruler = L.Control.extend({
                // least in the US. (The ruler unit to use doesn't seem to be 
stored in the document
                // at least for .odt?)
                for (var num = 0; num <= (this.options.pageWidth / 1000) + 1; 
num++) {
-
                        var marker = L.DomUtil.create('div', 
'loleaflet-ruler-maj', this._rBPContainer);
-
                        // The - 1 is to compensate for the left and right .5px 
borders of
                        // loleaflet-ruler-maj in leaflet.css.
                        marker.style.width = 
this.options.DraggableConvertRatio*1000 - 1 + 'px';
@@ -355,12 +353,9 @@ L.Control.Ruler = L.Control.extend({
                }
 
                if (!this.options.marginSet) {
-
                        this.options.marginSet = true;
-
                        this._lMarginMarker = L.DomUtil.create('div', 
'loleaflet-ruler-margin loleaflet-ruler-left', this._rFace);
                        this._rMarginMarker =  L.DomUtil.create('div', 
'loleaflet-ruler-margin loleaflet-ruler-right', this._rFace);
-
                        this._lMarginDrag = L.DomUtil.create('div', 
'loleaflet-ruler-drag loleaflet-ruler-left', this._rMarginWrapper);
                        this._lToolTip = L.DomUtil.create('div', 
'loleaflet-ruler-ltooltip', this._lMarginDrag);
                        this._rMarginDrag = L.DomUtil.create('div', 
'loleaflet-ruler-drag loleaflet-ruler-right', this._rMarginWrapper);
@@ -372,7 +367,6 @@ L.Control.Ruler = L.Control.extend({
                                this.options.interactive = true;
                                L.DomEvent.on(this._rMarginDrag, 'touchstart', 
this._initiateDrag, this);
                                L.DomEvent.on(this._lMarginDrag, 'touchstart', 
this._initiateDrag, this);
-
                        }
                }
 
@@ -625,12 +619,36 @@ L.Control.Ruler = L.Control.extend({
                }
                return tabstop;
        },
+
+       _showTabstopContextMenu: function(position, tabstopNumber) {
+               var self = this;
+               this.currentPositionInTwips = position;
+               this.currentTabStopIndex = tabstopNumber;
+               $.contextMenu({
+                       selector: '.loleaflet-ruler-tabstopcontainer',
+                       className: 'loleaflet-font',
+                       items: {
+                               inserttabstop: {
+                                       name: _('Insert tabstop'),
+                                       callback: 
(this._insertTabstop).bind(this),
+                                       visible: function() {
+                                               return 
self.currentPositionInTwips != null;
+                                       }
+                               },
+                               removetabstop: {
+                                       name: _('Delete tabstop'),
+                                       callback: 
(this._deleteTabstop).bind(this),
+                                       visible: function() {
+                                               return self.currentTabStopIndex 
!= null;
+                                       }
+                               }
+                       }
+               });
+       },
+
        _initiateTabstopDrag: function(event) {
                // console.log('===> _initiateTabstopDrag ' + event.type);
 
-               this.currentPositionInTwips = null;
-               this.currentTabStopIndex = null;
-
                var tabstopContainer = null;
                var pointX = null;
 
@@ -652,32 +670,12 @@ L.Control.Ruler = L.Control.extend({
                        // right-click inside tabstop container
                        if (event.button === 2) {
                                if (tabstop == null) {
-                                       this.currentPositionInTwips = 
this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x;
+                                       var position = 
this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x;
+                                       this._showTabstopContextMenu(position, 
null);
                                }
                                else {
-                                       this.currentTabStopIndex = 
tabstop.tabStopNumber;
+                                       this._showTabstopContextMenu(null, 
tabstop.tabStopNumber);
                                }
-                               var self = this;
-                               $.contextMenu({
-                                       selector: 
'.loleaflet-ruler-tabstopcontainer',
-                                       className: 'loleaflet-font',
-                                       items: {
-                                               inserttabstop: {
-                                                       name: _('Insert 
tabstop'),
-                                                       callback: 
(this._insertTabstop).bind(this),
-                                                       visible: function() {
-                                                               return 
self.currentPositionInTwips != null;
-                                                       }
-                                               },
-                                               removetabstop: {
-                                                       name: _('Delete 
tabstop'),
-                                                       callback: 
(this._deleteTabstop).bind(this),
-                                                       visible: function() {
-                                                               return 
self.currentTabStopIndex != null;
-                                                       }
-                                               }
-                                       }
-                               });
                                event.stopPropagation();
                                return;
                        }
@@ -773,22 +771,30 @@ L.Control.Ruler = L.Control.extend({
        },
 
        _onTabstopContainerLongPress: function(event) {
-               var pointX = event.center.x - 
event.target.getBoundingClientRect().left;
-               this.currentPositionInTwips = 
this._map._docLayer._pixelsToTwips({x: pointX, y:0}).x;
+               var tabstopContainer = event.target;
+               var pointX = event.center.x - 
tabstopContainer.getBoundingClientRect().left;
+               var pointXTwip = this._map._docLayer._pixelsToTwips({x: pointX, 
y:0}).x;
+               var tabstop = this._getTabStopHit(tabstopContainer, pointX);
+
                if (window.mode.isMobile() || window.mode.isTablet()) {
-                       this._insertTabstop();
+                       if (tabstop == null) {
+                               this.currentPositionInTwips = pointXTwip;
+                               this.currentTabStopIndex = null;
+                               this._insertTabstop();
+                       }
+                       else {
+                               this.currentPositionInTwips = null;
+                               this.currentTabStopIndex = 
tabstop.tabStopNumber;
+                               this._deleteTabstop();
+                       }
                }
                else {
-                       $.contextMenu({
-                               selector: '.loleaflet-ruler-tabstopcontainer',
-                               className: 'loleaflet-font',
-                               items: {
-                                       inserttabstop: {
-                                               name: _('Insert tabstop'),
-                                               callback: 
(this._insertTabstop).bind(this)
-                                       }
-                               }
-                       });
+                       var tabstopNumber = null;
+                       if (tabstop != null) {
+                               tabstopNumber = tabstop.tabstopNumber;
+                               pointXTwip = null;
+                       }
+                       this._showTabstopContextMenu(pointXTwip, tabstopNumber);
                }
        },
 
@@ -836,7 +842,6 @@ L.Control.Ruler = L.Control.extend({
 
 });
 
-
 L.control.ruler = function (options) {
        return new L.Control.Ruler(options);
 };
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to