summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-05-02 16:23:32 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-05-02 16:23:32 +0200
commitaaf07abb8814bc8d81741c4c2760e2ba53342e43 (patch)
tree565fb2c786b6382b57590ad0b17fdd9883821ea2 /addons/web/static/src/js
parent253cfdd59d32f3329684ec69b05a7423784d78a4 (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/js')
-rw-r--r--addons/web/static/src/js/view_form.js18
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)();
},
};