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
This commit is contained in:
Cédric Krier committed 2022-11-24 19:23:52 +01:00
1 parent dbc52b9d71
commit 1210fbfd45
1 file changed
+14 -3
+14 -3
View File
@@ -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);