Index: appengine/chromium_rietveld/new_static/components/cr-user-autocomplete.html |
diff --git a/appengine/chromium_rietveld/new_static/components/cr-user-autocomplete.html b/appengine/chromium_rietveld/new_static/components/cr-user-autocomplete.html |
index 7140c5791c062e5610bd0fa20d535b93064053a6..c4853fd107993525a1ea75e372055ad76a8d49e5 100644 |
--- a/appengine/chromium_rietveld/new_static/components/cr-user-autocomplete.html |
+++ b/appengine/chromium_rietveld/new_static/components/cr-user-autocomplete.html |
@@ -150,21 +150,26 @@ found in the LICENSE file. --> |
input.selectionStart = range.end; |
input.selectionEnd = input.selectionStart; |
- // For Safari/Chrome: |
- // Simulate the user entering the text. This makes undo work properly instead of using |
- // data binding which is like a big "replace" action. |
- var inputEvent = document.createEvent("TextEvent"); |
- if (inputEvent.initTextEvent) { |
- inputEvent.initTextEvent("textInput", true, true, window, value, 0, "en-US"); |
- input.dispatchEvent(inputEvent); |
- } else if (window.InputEvent) { |
- // For Firefox we can just update the value and undo will work. |
+ // Make sure the input is focused. |
+ input.focus(); |
+ |
+ // TODO(esprehn): This is a terrible hack but there's no obvious |
+ // work around since execCommand doesn't work for input in Firefox |
+ // and I can't figure out how to detect that, and we shouldn't |
+ // feature detect based on InputEvent otherwise it'll break Chrome |
+ // later. |
+ if (navigator.userAgent.contains("Firefox")) { |
PhistucK
2016/08/03 15:51:20
Yes, no. :P
|
+ // For Firefox we can just update the value and undo will work, |
+ // execCommand doesn't seem to update the input value. |
input.value = input.value.to(input.selectionEnd) + value + input.value.from(input.selectionEnd); |
input.dispatchEvent(wrap(new InputEvent("input", { |
data: value, |
bubbles: true, |
cancelable:false |
}))); |
PhistucK
2016/08/03 15:51:20
Perhaps this is a Blink issue. Have you filed one?
|
+ } else { |
+ // Chrome and Safari can use execCommand. |
Bons
2016/08/03 15:49:42
FYI Polymer Rietveld doesn’t render in Safari (mob
esprehn
2016/08/03 16:46:53
It works for me in WebKit nightly , where do you s
|
+ document.execCommand("InsertText", false, value); |
PhistucK
2016/08/03 15:51:20
Yes, well, this is non-standard. I advise against
esprehn
2016/08/03 16:46:53
Given that there's no workaround we're going to do
|
} |
// Put the caret back at the end of the new input. This also makes sure the input scrolls |