diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-08-31 15:10:46 -0400 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-08-31 15:10:46 -0400 |
commit | 9b46fe70de9d0e7b625649fcdde53f5b91bbb114 (patch) | |
tree | 0a53a34c90d6e618ec331c9b5b3bc231f3a10553 | |
parent | ad0dca7bb12d13545b559e9c738fcc0767ba20d5 (diff) |
Fix imposter issues with <input type="text">
-rw-r--r-- | ext/fg/js/document.js | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/fg/js/document.js b/ext/fg/js/document.js index e6a16bd5..1a49521b 100644 --- a/ext/fg/js/document.js +++ b/ext/fg/js/document.js @@ -30,7 +30,7 @@ function docOffsetCalc(elementRect) { return {top, left}; } -function docImposterCreate(element) { +function docImposterCreate(element, isTextarea) { const styleProps = window.getComputedStyle(element); const stylePairs = []; for (const key of styleProps) { @@ -49,8 +49,14 @@ function docImposterCreate(element) { imposter.style.opacity = 0; imposter.style.zIndex = 2147483646; imposter.style.margin = '0'; - if (element.nodeName === 'TEXTAREA' && styleProps.overflow === 'visible') { - imposter.style.overflow = 'auto'; + if (isTextarea) { + if (styleProps.overflow === 'visible') { + imposter.style.overflow = 'auto'; + } + } else { + imposter.style.overflow = 'hidden'; + imposter.style.whiteSpace = 'nowrap'; + imposter.style.lineHeight = styleProps.height; } document.body.appendChild(imposter); @@ -79,8 +85,10 @@ function docRangeFromPoint(point) { case 'BUTTON': return new TextSourceElement(element); case 'INPUT': + imposter = docImposterCreate(element, false); + break; case 'TEXTAREA': - imposter = docImposterCreate(element); + imposter = docImposterCreate(element, true); break; } } |