MediaWiki:Gadget-GrAnnotations.js: Difference between revisions
No edit summary Tag: Reverted |
Tags: Undo Reverted |
||
| Line 542: | Line 542: | ||
}); | }); | ||
/* selectionchange | /* Mobile: intercept selection as early as possible */ | ||
var _lastTouchEnd = 0; | |||
document.addEventListener('touchend', function(e) { | |||
if (!_mobile) return; | |||
if ($fab[0] && $fab[0].contains(e.target)) return; | |||
_lastTouchEnd = Date.now(); | |||
clearTimeout(_selTimer); | |||
/* Fire at 100ms — before browser popup (~300ms) */ | |||
_selTimer = setTimeout(tryShowActions, 100); | |||
}, { passive: true }); | |||
/* selectionchange debounced */ | |||
var _selTimer = null; | var _selTimer = null; | ||
document.addEventListener('selectionchange', function() { | document.addEventListener('selectionchange', function() { | ||
| Line 548: | Line 559: | ||
clearTimeout(_selTimer); | clearTimeout(_selTimer); | ||
var v = _selVersion; | var v = _selVersion; | ||
_selTimer = setTimeout(function(){ | _selTimer = setTimeout(function(){ | ||
if (v !== _selVersion) return; | if (v !== _selVersion) return; | ||
if (_fabSelVer === v) return; | if (_fabSelVer === v) return; | ||
if (_mobile) return; /* mobile uses touchend instead */ | |||
if ( | |||
tryShowActions(); | tryShowActions(); | ||
}, | }, 600); | ||
}); | }); | ||
/* ── KEY FIX: fab touchstart sets flag to prevent hideActions ── */ | /* ── KEY FIX: fab touchstart sets flag to prevent hideActions ── */ | ||