diff --git a/frappe/__init__.py b/frappe/__init__.py index 3bcb3a6705..e17a925e46 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = '8.3.5' +__version__ = '8.3.6' __title__ = "Frappe Framework" local = Local() diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index bd4e876165..cc7c4f35e9 100755 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -282,7 +282,6 @@ frappe.ui.form.ControlInput = frappe.ui.form.Control.extend({ // mandatory style on refresh refresh_input: function() { var me = this; - var make_input = function() { if(!me.has_input) { me.make_input(); @@ -1724,6 +1723,7 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({ }); }, onChange: function(value) { + if(this._setting_value) return; me.parse_validate_and_set_in_model(value); }, onKeydown: function(e) { @@ -1847,18 +1847,23 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({ }, set_in_editor: function(value) { // set value after user has stopped editing + if(this.__setting_value) { + // we don't understand how the internal triggers work, + // so quit + return; + } + if(!this._last_change_on || (moment() - moment(this._last_change_on) > 3000)) { + this.__setting_value = setTimeout(() => this.__setting_value = null, 500); this.editor.summernote('code', value); } else { - if(!this._setting_value) { - this._setting_value = setInterval(() => { - if(moment() - moment(this._last_change_on) > 3000) { - this.editor.summernote('code', this.last_value); - clearInterval(this._setting_value); - this._setting_value = null; - } - }, 1000); - } + this._setting_value = setInterval(() => { + if(moment() - moment(this._last_change_on) > 3000) { + this.editor.summernote('code', this.last_value); + clearInterval(this._setting_value); + this._setting_value = null; + } + }, 1000); } }, set_focus: function() { diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index 55c07fc4ac..256acd278d 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -408,7 +408,9 @@ frappe.ui.Filter = Class.extend({ } } } else if(in_list(["in", "not in"], this.get_condition())) { - val = $.map(val.split(","), function(v) { return strip(v); }); + if(val) { + val = $.map(val.split(","), function(v) { return strip(v); }); + } } if(val === '%') { val = ""; }