diff --git a/addons/web/static/src/legacy/js/fields/signature.js b/addons/web/static/src/legacy/js/fields/signature.js index eadef64d4f5..fea26660a8c 100644 --- a/addons/web/static/src/legacy/js/fields/signature.js +++ b/addons/web/static/src/legacy/js/fields/signature.js @@ -45,10 +45,7 @@ var FieldBinarySignature = AbstractFieldBinary.extend({ * @override */ isSet: function () { - if (this.mode === 'edit') { - return this.value; - } - return true; + return this.value; }, //-------------------------------------------------------------------------- diff --git a/addons/web/static/src/legacy/js/views/form/form_renderer.js b/addons/web/static/src/legacy/js/views/form/form_renderer.js index 3608efe53b6..4c4a517f84c 100644 --- a/addons/web/static/src/legacy/js/views/form/form_renderer.js +++ b/addons/web/static/src/legacy/js/views/form/form_renderer.js @@ -46,6 +46,7 @@ var FormRenderer = BasicRenderer.extend({ this.idsForLabels = {}; this.lastActivatedFieldIndex = -1; this.alertFields = {}; + this.labelsToPostProcess = []; // The form renderer doesn't render invsible fields (invisible="1") by // default, to speed up the rendering. However, we sometimes have to // display them (e.g. in Studio, in "show invisible" mode). This flag @@ -170,6 +171,7 @@ var FormRenderer = BasicRenderer.extend({ if (self.$('.o_field_invalid').length) { self.canBeSaved(self.state.id); } + self._postProcessLabels(); return resetWidgets; }); }, @@ -461,6 +463,18 @@ var FormRenderer = BasicRenderer.extend({ this.defaultFocusField = widget; } }, + /** + * This function is called once form view is rendered or modifiers are + * changed to process labels to add o_form_label_empty. + * + * @private + */ + _postProcessLabels() { + this.labelsToPostProcess.forEach((label) => { + label.call(); + }); + this.labelsToPostProcess = []; + }, /** * @private * @param {Object} node @@ -959,11 +973,12 @@ var FormRenderer = BasicRenderer.extend({ callback: function (element, modifiers, record) { var widgets = self.allFieldWidgets[record.id]; var widget = _.findWhere(widgets, {name: fieldName}); + const fieldsInfo = record.fieldsInfo[self.viewType]; if (!widget) { - return; // FIXME this occurs if the widget is created - // after the label (explicit