From ac2895fd62bf18787c83c7ff43d0e7eba4f31c12 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 2 Jul 2012 11:31:13 +0200 Subject: [PATCH] [IMP] don't handle keypresses at the editor level, do that in the view instead maybe the editor could do it and trigger an event of its own for the view to handle? bzr revid: xmo@openerp.com-20120702093113-berlms96fqzfjlyg --- .../web/static/src/js/view_list_editable.js | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index fb367c41bb4..0971edc348e 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -78,16 +78,27 @@ openerp.web.list_editable = function (instance) { } }, on_loaded: function (data, grouped) { - var self = this, form_ready = $.when(); + var self = this; // tree/@editable takes priority on everything else if present. this.options.editable = ! this.options.read_only && (data.arch.attrs.editable || this.options.editable); var result = this._super(data, grouped); if (this.options.editable || true) { this.editor = new instance.web.list.Editor(this); - return $.when( - result, - this.editor.prependTo(this.$element)); + var editor_ready = this.editor.prependTo(this.$element).then(function () { + self.editor.$element.on('keyup', function (e) { + switch (e.which) { + case KEY_RETURN: + self.save_edition(); + break; + case KEY_ESCAPE: + self.cancel_edition(); + break; + } + }); + }); + + return $.when(result, editor_ready); } return result; @@ -264,19 +275,8 @@ openerp.web.list_editable = function (instance) { var self = this; var _super = this._super(); this.form.embedded_view = this.getParent().editionView(this); - var form_ready = this.form.appendTo(this.$element).then(function () { - self.form.do_hide(); - self.form.$element.on('keyup', function (e) { - switch (e.which) { - case KEY_RETURN: - self.save(); - break; - case KEY_ESCAPE: - self.cancel(); - break; - } - }); - }); + var form_ready = this.form.appendTo(this.$element).then( + self.form.proxy('do_hide')); return $.when(_super, form_ready); },