FIX: On chrome, focusing on a recently changed textarea would scroll

This commit is contained in:
Robin Ward 2015-12-29 14:59:12 -05:00
parent a42826f2ae
commit fd6bbc69e2
2 changed files with 25 additions and 2 deletions
app/assets/javascripts/discourse/components
test/javascripts/components

@ -317,12 +317,15 @@ export default Ember.Component.extend({
_selectText(from, length) { _selectText(from, length) {
Ember.run.scheduleOnce('afterRender', () => { Ember.run.scheduleOnce('afterRender', () => {
const textarea = this.$('textarea.d-editor-input')[0]; const $textarea = this.$('textarea.d-editor-input');
const textarea = $textarea[0];
const oldScrollPos = $textarea.scrollTop();
if (!this.capabilities.isIOS) { if (!this.capabilities.isIOS) {
textarea.focus(); $textarea.focus();
} }
textarea.selectionStart = from; textarea.selectionStart = from;
textarea.selectionEnd = textarea.selectionStart + length; textarea.selectionEnd = textarea.selectionStart + length;
$textarea.scrollTop(oldScrollPos);
}); });
}, },

@ -516,6 +516,26 @@ testCase(`rule with a selection`, function(assert, textarea) {
}); });
}); });
testCase(`doesn't jump to bottom with long text`, function(assert, textarea) {
let longText = 'hello world.';
for (let i=0; i<8; i++) {
longText = longText + longText;
}
this.set('value', longText);
andThen(() => {
$(textarea).scrollTop(0);
textarea.selectionStart = 3;
textarea.selectionEnd = 3;
});
click('button.bold');
andThen(() => {
assert.equal($(textarea).scrollTop(), 0, 'it stays scrolled up');
});
});
componentTest('emoji', { componentTest('emoji', {
template: '{{d-editor value=value}}', template: '{{d-editor value=value}}',
setup() { setup() {