diff --git a/addons/web/static/src/views/form/form_controller.js b/addons/web/static/src/views/form/form_controller.js index 41a1d43b75a..d467b75741f 100644 --- a/addons/web/static/src/views/form/form_controller.js +++ b/addons/web/static/src/views/form/form_controller.js @@ -187,7 +187,9 @@ export class FormController extends Component { this.fieldsToTranslate = useState(fieldsToTranslate || {}); const activeNotebookPages = { ...state.activeNotebookPages }; this.onNotebookPageChange = (notebookId, page) => { - activeNotebookPages[notebookId] = page; + if (page) { + activeNotebookPages[notebookId] = page; + } }; useSetupView({ diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index 9329c3a031d..0414cbe1ac1 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -12976,4 +12976,41 @@ QUnit.module("Views", (hooks) => { assert.strictEqual(target.querySelector(".o_form_nosheet").innerHTML, "
"); assert.verifySteps(["warn", "warn", "warn", "warn"]); }); + + QUnit.test("reload form view with an empty notebook", async function (assert) { + assert.expect(1); + + serverData.views = { + "partner,false,form": ` +
+ + + + +
`, + "partner,false,list": '', + "partner,false,search": "", + }; + + serverData.actions = { + 1: { + id: 1, + name: "Partner", + res_model: "partner", + type: "ir.actions.act_window", + views: [ + [false, "list"], + [false, "form"], + ], + }, + }; + + const target = getFixture(); + const webClient = await createWebClient({ serverData }); + await doAction(webClient, 1); + await click(target.querySelector(".o_data_row .o_data_cell")); + await click(target.querySelector(".o_back_button")); + await click(target.querySelector(".o_data_row .o_data_cell")); + assert.containsOnce(target, ".o_form_view"); + }); });