diff options
Diffstat (limited to 'ext/fg/js')
| -rw-r--r-- | ext/fg/js/document.js | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/ext/fg/js/document.js b/ext/fg/js/document.js index 821a279f..9366832e 100644 --- a/ext/fg/js/document.js +++ b/ext/fg/js/document.js @@ -55,6 +55,8 @@ function docImposterCreate(element) {      document.body.appendChild(imposter);      imposter.scrollTop = element.scrollTop;      imposter.scrollLeft = element.scrollLeft; + +    return imposter;  }  function docImposterDestroy() { @@ -65,11 +67,12 @@ function docImposterDestroy() {  function docRangeFromPoint(point) {      const element = document.elementFromPoint(point.x, point.y); +    let imposter = null;      if (element) {          if (element.nodeName === 'IMG' || element.nodeName === 'BUTTON') {              return new TextSourceElement(element);          } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { -            docImposterCreate(element); +            imposter = docImposterCreate(element);          }      } @@ -86,6 +89,14 @@ function docRangeFromPoint(point) {      }      const range = document.caretRangeFromPoint(point.x, point.y); + +    if(imposter !== null) imposter.style.zIndex = -2147483646; + +    const rect = range.getClientRects()[0]; +    if (point.y > rect.bottom + 2) { +        return; +    } +      if (range) {          return new TextSourceRange(range);      } |