summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js/backend.js
diff options
context:
space:
mode:
authorNicolas Lempereur <nle@odoo.com>2015-12-28 14:06:50 +0100
committerNicolas Lempereur <nle@odoo.com>2015-12-28 17:08:55 +0100
commit4bdba4af85af29f3468dbfc2c626edebe8315911 (patch)
treec834794a8a55e9f57c773386f05f824f7c682d6f /addons/web_editor/static/src/js/backend.js
parent79ce860090fe20656d2e62a86b53f826becd61d0 (diff)
[FIX] web_editor: inline editor should not devore focus
The FieldTextHtmlSimple widget would focus on itself when changing its value not by direct user interaction. But if this change was coming from next/previous record, or an onchange that was breaking the "autofocus" heuristic for field in Odoo. With this commit: - the autofocus heuristic is kept, - if focused, selection is set at the end if it is possible on the browser, else (old internet explorer and not visible field) the selection is at the beginning. opw-660486
Diffstat (limited to 'addons/web_editor/static/src/js/backend.js')
-rw-r--r--addons/web_editor/static/src/js/backend.js18
1 files changed, 12 insertions, 6 deletions
diff --git a/addons/web_editor/static/src/js/backend.js b/addons/web_editor/static/src/js/backend.js
index 17a2df31c6e..3d3b6cb27ee 100644
--- a/addons/web_editor/static/src/js/backend.js
+++ b/addons/web_editor/static/src/js/backend.js
@@ -103,17 +103,23 @@ var FieldTextHtmlSimple = widget.extend({
return value;
},
focus: function() {
- var input = !this.get("effective_readonly") && this.$textarea;
- return input ? input.focus() : false;
+ if (this.get("effective_readonly")) {
+ return false;
+ }
+ // on IE an error may occur when creating range on not displayed element
+ try {
+ return this.$content.focusInEnd();
+ } catch (e) {
+ return this.$content.focus();
+ };
},
render_value: function() {
var value = this.get('value');
this.$textarea.val(value || '');
this.$content.html(this.text_to_html(value));
- // on ie an error may occur when creating range on not displayed element
- try {
- this.$content.focusInEnd();
- } catch (e) {}
+ if (this.$content.is(document.activeElement)) {
+ this.focus();
+ }
var history = this.$content.data('NoteHistory');
if (history && history.recordUndo()) {
this.$('.note-toolbar').find('button[data-event="undo"]').attr('disabled', false);