diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b697d1a5a22..22682ecbabb 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2232,13 +2232,17 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope this.dataset.create_function = function() { return self.options.create_function.apply(null, arguments).then(function(r) { self.created_elements.push(r.result); - if (self._created) { - self._created.resolve(); + if (self._written) { + self._written.resolve(); } }); } this.dataset.write_function = function() { - return self.write_row.apply(null, arguments); + return self.write_row.apply(self, arguments).then(function() { + if (self._written) { + self._written.resolve(); + } + }); } this.dataset.parent_view = this.options.parent_view; this.dataset.on_default_get.add(this.on_default_get); @@ -2345,16 +2349,16 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope $buttons.html(QWeb.render("SelectCreatePopup.form.buttons", {widget:self})); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new"); $nbutton.click(function() { - self._created = $.Deferred().then(function() { - self._created = undefined; + self._written = $.Deferred().then(function() { + self._written = undefined; self.view_form.on_button_new(); }); self.view_form.do_save(); }); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save"); $nbutton.click(function() { - self._created = $.Deferred().then(function() { - self._created = undefined; + self._written = $.Deferred().then(function() { + self._written = undefined; self.check_exit(); }); self.view_form.do_save(); diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 46091fa91b7..aeedee706d8 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -771,7 +771,9 @@ db.web.View = db.web.Widget.extend(/** @lends db.web.View# */{ var self = this; var result_handler = function () { if (on_closed) { on_closed.apply(null, arguments); } - return self.widget_parent.on_action_executed.apply(null, arguments); + if (self.widget_parent && self.widget_parent.on_action_executed) { + return self.widget_parent.on_action_executed.apply(null, arguments); + } }; var handler = function (r) { var action = r.result;