From 1210fbfd45dfad69dc7867d9afa117da45abaf74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 24 Nov 2022 19:23:52 +0100 Subject: [PATCH] Compare text with normalized newlines The textarea normalize newlines so if the field value contains \r\n or \r, it is wrongly considered as modified. issue11896 review437611003 (grafted from 555c9de0746f064cdb94f61ee899d73d31962e4f) --HG-- branch : 6.0 --- src/view/form.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/view/form.js b/src/view/form.js index 9d6202e798..fb55504afe 100644 --- a/src/view/form.js +++ b/src/view/form.js @@ -2188,15 +2188,26 @@ function eval_pyson(value){ }, get modified() { if (this.record && this.field) { - return this.field.get_client(this.record) != this.get_value(); + var value = this._normalize_newline( + this.field.get_client(this.record)); + return value != this.get_value(); } return false; }, get_value: function() { - return this.input.val() || ''; + return this._normalize_newline(this.input.val() || ''); }, set_value: function() { - this.field.set_client(this.record, this.get_value()); + // avoid modification of not normalized value + var value = this.get_value(); + var prev_value = this.field.get_client(this.record); + if (value == this._normalize_newline(prev_value)) { + value = prev_value; + } + this.field.set_client(this.record, value); + }, + _normalize_newline: function(content) { + return content.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); }, set_readonly: function(readonly) { Sao.View.Form.Text._super.set_readonly.call(this, readonly);