diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index b4f445cc8eb..a2c0d2129ab 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -337,11 +337,12 @@ var FormRenderer = BasicRenderer.extend({ $result.append($sep); } + var rows = []; var $currentRow = $(''); var currentColspan = 0; _.each(node.children, function (child) { if (child.tag === 'newline') { - $currentRow.appendTo($result); + rows.push($currentRow); $currentRow = $(''); currentColspan = 0; return; @@ -360,7 +361,7 @@ var FormRenderer = BasicRenderer.extend({ currentColspan += colspan; if (currentColspan > col) { - $currentRow.appendTo($result); + rows.push($currentRow); $currentRow = $(''); currentColspan = colspan; } @@ -378,15 +379,15 @@ var FormRenderer = BasicRenderer.extend({ } $currentRow.append($tds); }); - $currentRow.appendTo($result); + rows.push($currentRow); - _.each($result.find('tr'), function (tr) { - var $tr = $(tr); + _.each(rows, function ($tr) { var nonLabelColSize = 100 / (col - $tr.children('.o_td_label').length); _.each($tr.children(':not(.o_td_label)'), function (el) { var $el = $(el); $el.css('width', ((parseInt($el.attr('colspan'), 10) || 1) * nonLabelColSize) + '%'); }); + $result.append($tr); }); return $result; diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 6754f9c2eb5..7afb8545934 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4181,7 +4181,7 @@ QUnit.module('Views', { }); QUnit.test('form rendering with groups with col/colspan', function (assert) { - assert.expect(45); + assert.expect(46); var form = createView({ View: FormView, @@ -4210,6 +4210,15 @@ QUnit.module('Views', { '' + '' + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + '' + '', res_id: 1, @@ -4289,6 +4298,10 @@ QUnit.module('Views', { assert.ok($fieldGroupFifthRowTds.eq(1).hasClass('o_td_label'), "the second td should be a label td"); assert.strictEqual($fieldGroupFifthRowTds.eq(2).attr('style').substr(0, 9), "width: 50", "the third td should 50% width"); + // Verify that one2many list table hasn't been impacted + assert.strictEqual(form.$('.o_field_one2many th:first').attr('style'), undefined, + "o2m list columns should have no width harcoded"); + form.destroy(); });