diff --git a/src/webui/www/private/scripts/contextmenu.js b/src/webui/www/private/scripts/contextmenu.js index 600f0f377..899204c42 100644 --- a/src/webui/www/private/scripts/contextmenu.js +++ b/src/webui/www/private/scripts/contextmenu.js @@ -46,7 +46,8 @@ var ContextMenu = new Class({ onShow: $empty, onHide: $empty, onClick: $empty, - fadeSpeed: 200 + fadeSpeed: 200, + touchTimer: 600 }, //initialization @@ -148,6 +149,21 @@ var ContextMenu = new Class({ elem.addEvent('click', function(e) { this.hide(); }.bind(this)); + + elem.addEvent('touchstart', function(e) { + e.preventDefault(); + clearTimeout(this.touchstartTimer); + this.hide(); + + const touchstartEvent = e; + this.touchstartTimer = setTimeout(function() { + this.triggerMenu(touchstartEvent, elem); + }.bind(this), this.options.touchTimer); + }.bind(this)); + elem.addEvent('touchend', function(e) { + e.preventDefault(); + clearTimeout(this.touchstartTimer); + }.bind(this)); }, addTarget: function(t) { diff --git a/src/webui/www/private/scripts/dynamicTable.js b/src/webui/www/private/scripts/dynamicTable.js index 784bdd7d0..0871c08eb 100644 --- a/src/webui/www/private/scripts/dynamicTable.js +++ b/src/webui/www/private/scripts/dynamicTable.js @@ -706,6 +706,13 @@ var DynamicTable = new Class({ } return false; }); + tr.addEvent('touchstart', function(e) { + if (!this._this.isRowSelected(this.rowId)) { + this._this.deselectAll(); + this._this.selectRow(this.rowId); + } + return false; + }); this.setupTr(tr);