diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-05-02 16:23:32 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-05-02 16:23:32 +0200 |
| commit | aaf07abb8814bc8d81741c4c2760e2ba53342e43 (patch) | |
| tree | 565fb2c786b6382b57590ad0b17fdd9883821ea2 /addons/web/static/src | |
| parent | 253cfdd59d32f3329684ec69b05a7423784d78a4 (diff) | |
[imp] small modifications to the way invisibility is handled for future improvement regarding buttons
bzr revid: nicolas.vanhoren@openerp.com-20120502142332-tpu6cntjta28wpaz
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 09dd69074d8..5f76a08821b 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1118,8 +1118,6 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt // invisibility transfer var field_modifiers = JSON.parse($child.attr('modifiers') || '{}'); var invisible = field_modifiers.invisible; - field_modifiers.invisible = undefined; - $child.attr('modifiers', JSON.stringify(field_modifiers)); self.handle_common_properties($td, $("<dummy>").attr("modifiers", JSON.stringify({invisible: invisible}))); $tr.append($td.append($child)); @@ -1371,17 +1369,27 @@ instance.web.form.InvisibilityChangerMixin = { instance.web.form.compute_domain(this._ic_invisible_modifier, this._ic_field_manager.fields); this.set({"invisible": result}); }); - this.set({invisible: this._ic_invisible_modifier === true}); + this.set({invisible: this._ic_invisible_modifier === true, force_invisible: false}); + var check = function() { + if (this.get("invisible") || this.get('force_invisible')) { + this.set({"effective_invisible": true}); + } else { + this.set({"effective_invisible": false}); + } + }; + this.on('change:invisible', this, check); + this.on('change:force_invisible', this, check); + _.bind(check, this)(); }, start: function() { var check_visibility = function() { - if (this.get("invisible")) { + if (this.get("effective_invisible")) { this.$element.hide(); } else { this.$element.show(); } }; - this.on("change:invisible", this, check_visibility); + this.on("change:effective_invisible", this, check_visibility); _.bind(check_visibility, this)(); }, }; |
