diff options
| author | Stephen Blott | 2016-01-26 15:31:28 +0000 |
|---|---|---|
| committer | Stephen Blott | 2016-01-26 15:31:28 +0000 |
| commit | a3a8ede00fa1405135d519dc0015e65953318a2c (patch) | |
| tree | b7589cbd257f78caf17d9b7127a5d1d539989859 | |
| parent | adafa5e8546627e993da6d03b59a27fd4a9162b7 (diff) | |
| download | vimium-a3a8ede00fa1405135d519dc0015e65953318a2c.tar.bz2 | |
Disable position-at-end in text areas.
When we `simulateSelect` an input and the selection is at the start, we
move it to the end. This works well for single-line inputs. However,
the UX is *bad* for multiline inputs (such as text areas), and doubly so
if the end of the input happens to be out of the viewport.
This commit simply disables the repositioning of the selection within
text areas.
| -rw-r--r-- | lib/dom_utils.coffee | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index ee7d415f..027188bf 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -223,15 +223,16 @@ DomUtils = handlerStack.bubbleEvent "click", target: element else element.focus() - # If the cursor is at the start of the element's contents, send it to the end. Motivation: - # * the end is a more useful place to focus than the start, - # * this way preserves the last used position (except when it's at the beginning), so the user can - # 'resume where they left off'. - # NOTE(mrmr1993): Some elements throw an error when we try to access their selection properties, so - # wrap this with a try. - try - if element.selectionStart == 0 and element.selectionEnd == 0 - element.setSelectionRange element.value.length, element.value.length + if element.tagName.toLowerCase() != "textarea" + # If the cursor is at the start of the (non-textarea) element's contents, send it to the end. Motivation: + # * the end is a more useful place to focus than the start, + # * this way preserves the last used position (except when it's at the beginning), so the user can + # 'resume where they left off'. + # NOTE(mrmr1993): Some elements throw an error when we try to access their selection properties, so + # wrap this with a try. + try + if element.selectionStart == 0 and element.selectionEnd == 0 + element.setSelectionRange element.value.length, element.value.length |
