diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index 6b334f10c15..07861d4e6e8 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -347,3 +347,32 @@
width: 100%;
white-space: nowrap;
}
+.openerp2 .oe_form_group_cell {
+ position: relative;
+}
+.openerp2 .oe_form_group_cell .oe_field_char, .openerp2 .oe_form_group_cell .oe_form_field_selection select {
+ width: 99%;
+}
+.openerp2 .oe_form_group_cell .oe_form_field_selection select {
+ min-width: 90px;
+}
+.openerp2 .oe_layout_debugging .oe_form_group {
+ border: 1px solid red;
+}
+.openerp2 .oe_layout_debugging .oe_form_group_cell {
+ border: 1px solid blue;
+ padding-bottom: 1em;
+}
+.openerp2 .oe_layout_debugging .oe_layout_debug_cell {
+ position: absolute;
+ color: white;
+ bottom: 0;
+ left: 0;
+ background: green;
+}
+.openerp2 .oe_layout_debugging .oe_layout_debug_cell {
+ display: block;
+}
+.openerp2 .oe_layout_debug_cell {
+ display: none;
+}
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index fe9408c18a1..746bc5d32b4 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -340,6 +340,28 @@ $colour4: #8a89ba
.oe_form_button
width: 100%
white-space: nowrap
+ .oe_form_group_cell
+ position: relative
+ .oe_field_char, .oe_form_field_selection select
+ width: 99%
+ .oe_form_field_selection select
+ min-width: 90px
+ .oe_layout_debugging
+ .oe_form_group
+ border: 1px solid red
+ .oe_form_group_cell
+ border: 1px solid blue
+ padding-bottom: 1em
+ .oe_layout_debug_cell
+ position: absolute
+ color: white
+ bottom: 0
+ left: 0
+ background: green
+ .oe_layout_debug_cell
+ display: block
+ .oe_layout_debug_cell
+ display: none
// }}}
.openerp
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index a7684712d1f..c03d75f59f8 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -758,6 +758,17 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
w.replace($elem);
}
});
+ $('').appendTo(this.$element).click(this.do_toggle_layout_debugging);
+ },
+ do_toggle_layout_debugging: function() {
+ if (!this.$element.has('.oe_layout_debug_cell:first').length) {
+ this.$element.find('.oe_form_group_cell').each(function() {
+ var $span = $('').text($(this).attr('width'));
+ $span.prependTo($(this));
+ });
+ }
+ this.$element.toggleClass('oe_layout_debugging');
+
},
process_any: function($tag) {
var self = this;
@@ -858,6 +869,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
// Now compute width of cells
$table.find('tbody > tr').each(function() {
var to_compute = [],
+ row_cols = cols,
total = 100;
$(this).children().each(function() {
var $td = $(this),
@@ -867,13 +879,13 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
if ($child.attr('orientation') === 'vertical') {
$td.addClass('oe_vertical_separator').attr('width', '1');
$td.empty();
- cols--;
+ row_cols--;
}
break;
case 'label':
if ($child.attr('for')) {
$td.attr('width', '1%');
- cols--;
+ row_cols--;
total--;
}
break;
@@ -881,7 +893,7 @@ openerp.web.FormRenderingEngine = openerp.web.Widget.extend({
to_compute.push($td);
}
});
- var unit = Math.floor(total / cols);
+ var unit = Math.floor(total / row_cols);
_.each(to_compute, function($td, i) {
var width = parseInt($td.attr('colspan'), 10) * unit;
$td.attr('width', ((i == to_compute.length - 1) ? total : width) + '%');
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 069f48fb48e..3f5e067285c 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -948,7 +948,7 @@