diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 02a42046fa5..9bd566bf2a7 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -213,10 +213,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# self.$element.removeClass('oe_form_dirty'); }); }, - on_form_changed: function(changed_by_user) { - if (changed_by_user) { - this.$element.addClass('oe_form_dirty'); - } + on_form_changed: function() { for (var w in this.widgets) { w = this.widgets[w]; w.process_modifiers(); @@ -226,6 +223,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# w.update_dom(); } }, + do_notify_change: function() { + this.$element.addClass('oe_form_dirty'); + }, on_pager_action: function(action) { if (this.can_be_discarded()) { switch (action) { @@ -1418,6 +1418,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f this.set_value_from_ui(); this.view.do_onchange(this); this.view.on_form_changed(true); + this.view.do_notify_change(); } else { this.update_dom(true); } @@ -2612,6 +2613,13 @@ openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({ this.$form_header.find('button.oe_form_button_create').click(function() { self.do_save().then(self.on_button_new); }); + }, + do_notify_change: function() { + if (this.dataset.parent_view) { + this.dataset.parent_view.do_notify_change(); + } else { + this._super.apply(this, arguments); + } } });