diff --git a/addons/web/static/src/search/search_model.js b/addons/web/static/src/search/search_model.js
index 58e0998953c..2473901accb 100644
--- a/addons/web/static/src/search/search_model.js
+++ b/addons/web/static/src/search/search_model.js
@@ -215,7 +215,7 @@ export class SearchModel extends EventBus {
const { comparison, context, domain, groupBy, hideCustomGroupBy, orderBy } = config;
this.globalComparison = comparison;
- this.globalContext = toRaw(context || {});
+ this.globalContext = toRaw(Object.assign({}, context));
this.globalDomain = domain || [];
this.globalGroupBy = groupBy || [];
this.globalOrderBy = orderBy || [];
@@ -383,7 +383,7 @@ export class SearchModel extends EventBus {
const { comparison, context, domain, groupBy, orderBy } = config;
- this.globalContext = context || {};
+ this.globalContext = Object.assign({}, context);
this.globalDomain = domain || [];
this.globalComparison = comparison;
this.globalGroupBy = groupBy || [];
diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js
index 81286693fbf..468520b5a59 100644
--- a/addons/web/static/tests/views/fields/many2one_field_tests.js
+++ b/addons/web/static/tests/views/fields/many2one_field_tests.js
@@ -1,13 +1,7 @@
/** @odoo-module **/
-import { browser } from "@web/core/browser/browser";
-import { errorService } from "@web/core/errors/error_service";
-import { RPCError } from "@web/core/network/rpc_service";
-import { registry } from "@web/core/registry";
-import { session } from "@web/session";
-import { Field } from "@web/views/fields/field";
-import { Record } from "@web/views/record";
import { registerCleanup } from "@web/../tests/helpers/cleanup";
+import { makeTestEnv } from "@web/../tests/helpers/mock_env";
import {
addRow,
click,
@@ -32,6 +26,7 @@ import {
import {
applyFilter,
editSearch,
+ getFacetTexts,
toggleAddCustomFilter,
toggleFilterMenu,
toggleGroupByMenu,
@@ -39,8 +34,14 @@ import {
validateSearch,
} from "@web/../tests/search/helpers";
import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
-import { makeTestEnv } from "@web/../tests/helpers/mock_env";
import { createWebClient, doAction } from "@web/../tests/webclient/helpers";
+import { browser } from "@web/core/browser/browser";
+import { errorService } from "@web/core/errors/error_service";
+import { RPCError } from "@web/core/network/rpc_service";
+import { registry } from "@web/core/registry";
+import { session } from "@web/session";
+import { Field } from "@web/views/fields/field";
+import { Record } from "@web/views/record";
const serviceRegistry = registry.category("services");
@@ -648,6 +649,55 @@ QUnit.module("Fields", (hooks) => {
assert.strictEqual($("tr.o_data_row").length, 0, "should display 0 records");
});
+ QUnit.test(
+ "many2ones: Open the selection dialog several times using the 'Search More...' button with a context containing 'search_default_...'",
+ async function (assert) {
+ for (let i = 5; i < 11; i++) {
+ serverData.models.partner.records.push({ id: i, display_name: `Partner ${i}` });
+ }
+ serverData.models.partner.fields.display_name.searchable = true;
+ serverData.views = {
+ "partner,false,search": `
+