summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2017-11-07 10:53:04 +0100
committerGéry Debongnie <ged@odoo.com>2017-11-08 10:50:12 +0100
commit9e97ad8dce4525d6a132b8f8353b5c8fa87caba2 (patch)
tree9422f864b1fbd54684b428150aa282da31519db9 /addons/web/static/src/js/fields
parent324d4bfb562a1549f4895fd7d8925a3353edb704 (diff)
[FIX] web: prevent useless discard dialog from showing up
Here is a scenario that could cause an issue: - open a form view with a many2one - click on edit button - click on small external button for many2one. this opens a modal form view - click on save in the modal (without changing anything) - click on save in the main record - exit form view. this opens a discard dialog There were two issues here: - saving the modal dialog automatically marks the many2one field as changed. This was necessary to force reloading the data, because editing a sub value in the modal form view could have changed the display_name of the manyone field. However, this is not necessary when no change was done. - when saving a record, the _isDirty flag was reset to false only if an actual rpc was done. However, it may happen that the flag is set to dirty (for example, when modifying a value inside a many2one), but the main record has no changed fields. In this commit, we also remove the on_save handler in the formviewdialog. This is a small refactoring in a stable version, but no code currently use it, and I believe that it will make the code much easier to maintain (the previous code was really awkward), so I think that the tradeoff is acceptable.
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js8
1 files changed, 5 insertions, 3 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 19f2728a3ae..c9e6f218895 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -502,9 +502,11 @@ var FieldMany2One = AbstractField.extend({
title: _t("Open: ") + self.string,
view_id: view_id,
readonly: !self.can_write,
- on_saved: function () {
- self._setValue(self.value.data, {forceChange: true});
- self.trigger_up('reload', {db_id: self.value.id});
+ on_saved: function (record, changed) {
+ if (changed) {
+ self._setValue(self.value.data, {forceChange: true});
+ self.trigger_up('reload', {db_id: self.value.id});
+ }
},
}).open();
});